Provedení akce před zavoláním action()
- jedlicka
- Člen | 70
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