Provedení akce před zavoláním action()

- jedlicka
- Člen | 72
Ahoj,
mám šablonu latte (např. Customer:default.latte), ve které
mám tlačítko a to volá akci edit v presenteru
(RecordPresenter:actionEdit()). K této akci se samozřejmě
váže i šablona Record:edit.latte.
Potřeboval bych, aby se před samotným vykonáním akce a rendrováním
Record:edit.latte provedla kontrola, zda lze/nelze editovat.
Customer:default.latte:
<?php
<a href="{link Record:edit,id=>$o->id}" class="btn btn-success"><span class="glyphicon glyphicon-pencil"></span> Upravit</a>
?>
RecordPresenter:actionEdit():
<?php
public function actionEdit()
{
// vykonani akce edit
}
?>
Pokud dám nějakou kontrolu do samotné akce actionEdit(), tak
se už přesměruje na Record:edit.latte a pak se musím vracet.
Já bych ale chtěl, aby se akce vůbec nezavolala pokud neprojde nějaká
kontrola předtím (povolení editace je určeno nějakým atributem v DB).
Jak to udělat?
Děkuji za každou radu.
Martin

- David Matějka
- Moderator | 6445
actionEdit je to spravne misto, kde bys mel kontrolu provadet – pokud neni uzivatel autorizovan, tak vyhodis 403
druha vec je, ze do sablony musis dat ekvivalentni podminku, ktera zabrani vykreslovani toho edit tlacitka.

- David Matějka
- Moderator | 6445
throw new Nette\Application\ForbiddenRequestException;
Já vůbec nechci, aby se mi změnilo url
tak tam to tlačítko vůbec nevykresluj. případně vykresli a po kliknutí to třeba zobrazí nějaký alert