Nette 2.4 a čtení anotací
- Jiří Nápravník
- Člen | 710
Používám anotaci pro přístup k některým daným metodám pro přihlášené uživatele. Pokud chci povolit třeba metodu suggestTag, tak dám do hlavičky třídy anotaci @allowLoggedIn(suggestTag)
Používám tohle řešení , kde se počítá s tímhle:
$element = ($element instanceof \Nette\Reflection\Method) ? $element->getDeclaringClass() : $element;
$allowLoggedIn = (array) $element->getAnnotation('allowLoggedIn');
to mi nějak přestalo s Nette 2.4 fungovat. Když to mám v checkRequirements, tak při kontrole na třídu to projde, ale při kontrole na konkrétní metodu mit to vrátí NULL…
Editoval Jiří Nápravník (8. 12. 2016 0:03)
- Jiří Nápravník
- Člen | 710
To nikdo neřešil? Problém ej v tom, že v Nette 2.4 se nějak měnili věci kolem Reflection a už $element není \Nette\Reflection\Method a \Nette\Reflection\ClassType.
Zkusil jsem to nějak vlastními silami nahradit za tohle, je to korektně? Nejde to nějak lépe?
if($element instanceof \Nette\Application\UI\MethodReflection){
$allowLoggedIn = \Nette\Application\UI\ComponentReflection::parseAnnotation($element->getDeclaringClass(), 'allowLoggedIn');
} else {
$allowLoggedIn = \Nette\Application\UI\ComponentReflection::parseAnnotation($element, 'allowLoggedIn');
}
- akadlec
- Člen | 1326
Jo řešil jsem to při upgrade rozšíření permissions pro nette. Vidět to můžeš třeba v annotation checkeru. Snad ti to trochu pomůže.