Využití metody presenteru v šabloně

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tirus91
Člen | 199
+
0
-

mám metodu checkRights v BasePresenteru a potřeboval bych tuto metodu využít i v šabloně. Jedná se o to, že tato metoda mi kontroluje, zda uživatel je alespoň v jedné z rolí. Zkoušel jsem

$presenter->checkRights(['admin','mod']);

, ale hned mi to vypíše, že parent::checkRights neexistuje. Ta metoda musí být statická?

Nebo to mám dělat jinak?

David Kudera
Člen | 455
+
+1
-

Nevoláš v té metodě spíš parent::checkRights();? Pokud taková metoda v předkovi není, tak to tu chybu vyhodí..

A ještě není moc hezké volat takhle presenter v šabloně. Možná bych si spíš rozšířil třídu User a do ní přidal tuhle metodu. Pak by ti v šabloně stačilo:

{if $user->checkRights([admin, mod])}
Tirus91
Člen | 199
+
0
-

Jak si tu třídu mohu rozšířit aniž bych zasáhl do vendoru?
a ne, vážně volám

$presenter->checkRights(['admin','mod']);

Editoval Tirus91 (4. 9. 2014 12:44)

David Matějka
Moderator | 6445
+
+1
-

na rozsirovani Usera se vykasli. Radeji si udelej makro/helper…

edit: a nebo spravne nastav acl a nekontroluj proti roli, ale proti opravneni k resource..

Editoval matej21 (4. 9. 2014 12:52)

David Kudera
Člen | 455
+
0
-

Tirus91 napsal(a):

Jak si tu třídu mohu rozšířit aniž bych zasáhl do vendoru?
a ne, vážně volám

$presenter->checkRights(['admin','mod']);

jj to vidíme, že voláš tohle, ale já myslel uvnitř té metody checkRights, jestli nevoláš to, co jsem ti napsal…

Jinak ale @matej21 má pravdu, to bude rozhodně lepší

Tirus91
Člen | 199
+
0
-

@matej21
resource tam budu delat pozdeji. Ted mne tlaci cas, tak to delam takto jednoduse

@DavidKudera
ne, uvnitř nevolám parenta, ale mám tam cyklus na isInRole()