formuláře – získání hodnot z setdefaults při create
- pistolnik
- Člen | 4
Ahoj, potřebuju pls poradit s tímto:
mám funkci pro vytváření formuláře:
protected function createComponentPageForm()
{
...
$form->addSubmit('send', 'Uložit');
if(**co sem?**){
$form->addSubmit('smazat', 'Smazat');
}
return $form;
}
kterou chci používat jak na přidávání novejch postů, tak i na jejich editaci – a jen pokud edituju, tak chci zobrazit submit button pro mazání, při editaci předávam formu parametry přes setdefaults:
public function actionEdit($pageId)
{
$page = $this->database->table('page')->get($pageId);
if (!$page) {
$this->error('Příspěvek nebyl nalezen');
}else{
$this['pageForm']->setDefaults($page->toArray());
}
}
Moje otázka zní: existuje nějakej (pokud možno simple) způsob, jak v createComponentPageForm() získat hodnoty, který tam byly předány přes setdefaults? Jde mi o to, aby se podle nich mohl form vytvářet „na míru“ – např. viz. ta neúplná podmínka nahoře.
- besanek
- Člen | 128
Ne. createComponentPageForm
probíhá dříve než
setDefaults
, takže ještě hodnoty nejsou k dispozici. Budeš to
tam muset propašovat jinak, např. přes property presenteru.
class Presenter {
private $isEditation = false;
public function actionEdit($pageId)
{
$page = $this->database->table('page')->get($pageId);
if (!$page) {
$this->error('Příspěvek nebyl nalezen');
}else{
$this->isEditation = true;
$this['pageForm']->setDefaults($page->toArray());
}
}
protected function createComponentPageForm()
{
...
$form->addSubmit('send', 'Uložit');
if($this->isEditation){
$form->addSubmit('smazat', 'Smazat');
}
return $form;
}
}
- besanek
- Člen | 128
Ještě je tu možnost pracovat s databází v tom
createComponentPageForm
.
Ale spíš bych doporučil https://forum.nette.org/…nebo-tovarna
Můžeš předávat pole hodnot nepovinným argumentem, nebo ještě lépe jak je to v ukázce pouze IDčko a vytáhnout to až tam.