Nette 2.4 a čtení anotací

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jiří Nápravník
Člen | 710
+
+1
-

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
+
0
-

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
+
0
-

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.

Jiří Nápravník
Člen | 710
+
0
-

Díky, pokud koukám, tak to je obdobné, tak snad to mám dobře:-)

akadlec
Člen | 1326
+
0
-

:D no já tam mám ještě kompatibilitu na nette 2.3 :(