Nutnost zakládat prázdné actionSomething($id) při použití plink
- Pavel Kravčík
- Člen | 1196
Zajímá mě, jestli něco děláme špatně nebo proč tady Nette vyhazuje výjimku.
Mějme jednoduchý presenter, má jednu komponent a jedno latte.
Presenter:
protected function createComponentDetail()
{
$control = $this->IDetailFactory();
$control->setId($this->getParameter('id'));
return $control;
}
Latte:
{control detail}
Když někde jinde použiju odkaz na detail
{plink Presenter:detail, $id}
, tak to po mně bude chtít vytvořit
actionDetail($id)
i přestože bude „prázdná“. Presenter jí
nevyžaduje – pokud nebude volána přes plink
.
Z toho mi vychází, že správné předávání parametrů má vypadat následovně?
Upravený presenter:
public function actionDetail($id)
{
$this['detail']->setId($id);
}
protected function createComponentDetail()
{
$control = $this->IDetailFactory();
return $control;
}
Ale pokud tu komponentu budu mít na pěti místech, musím vytvořit 5×
action
metodu?
- David Matějka
- Moderator | 6445
tak samozrejme muzes predavat i pojmenovane parametry
{link Presenter:detail [id => $id]}
, pokud vsak chces, aby je
nette pojmenovalo samo, tak zkratka action nebo render metoda musi existovat,
i kdyz bude prazdna. neni na tom nic spatnyho, casto to tak taky mam
- Pavel Kravčík
- Člen | 1196
Jasně, díky. Nejhezčí mi přijde prostě správně definovat ten link
plink ... , id => $id
, to mi nenapadlo. :(