View se @ vs render metoda
- phx
- Člen | 651
Zdravim
Mel bych dalsi FR. Pri psani CRUD se mi osvedcilo mit view „default“ pro vypis dat + mazani a pohledy „new“ a „edit“ pro vytvoreni/upraveni zaznamu. Asi kazdeho napadne, ze tam bude ten samy formular. Osobne v akci prenastavuji pohled na '@form' protoze sablona se jmenuje @form.phtml. Jenze zde je problem ze se nezavola metoda renderForm(). Nette zkousi existenci render@Form coz ani nejde. Proto pri kazdem update upravuji toto:
protected static function formatRenderMethod($view)
{
$view = str_replace('@', '', $view);
return 'render' . $view;
}
Proste ten @ odmazni. Kuli bezpecnosti nechci mit form.phtml, protoze by to slo zavolat primo. Take chci urcite veci spojene s formularem delat v renderForm().
Myslite ze by to slo dat do Nette?
DIKY
Editoval phx (27. 9. 2010 21:58)
- Filip Procházka
- Moderator | 4668
a co ti vadí na?
public function actionSomething()
{
$this->view = "form";
}
// ...
public function renderForm()
{
$this->template->setFile(__DIR__ . '/../templates/@form.phtml');
}
určitě během 5ti minut vymyslíš jak to zautomatizovat :)
- srigi
- Nette Blogger | 558
Osobne riesim spolocny formular pre ADD/EDIT, tak ze componenta je ta ista a v action zmenim handler:
public function actionAddpage()
{
$this['formPageProperties']->onSubmit[] = array($this, 'SubmittedPageAdd');
}
public function actionEditPage()
{
$this['formPageProperties']->onSubmit[] = array($this, 'SubmittedPageEdit');
}
protected function createComponentFormPageProperties($name)
{
$form = new AppForm($this, $name);
$form->addText('name' . $lang['code'], 'Meno:')
// ...
$form->addSubmit('save', 'Uložiť');
}
public function SubmittedPageAdd(AppForm $form)
{
// create new Page
$blablabla = $form->values;
// ...
$this->flashMessage('Nová stránka bola úspešne vytvorená', 'info');
$this->redirect('default'); // redirect to listing
}
public function SubmittedPageEdit(AppForm $form)
{
// create new Page
$blablabla = $form->values;
// ...
$this->flashMessage('Nastavenia stránky boli úspešne uložené', 'info');
$this->redirect('default'); // redirect to listing
}
- phx
- Člen | 651
srigi
Zajimave. Ja osobne to mam takto:
- actionNew() – vyplni default hodnoty – view = @form
- actionEdit($id) – nacte z DB a vyplni hodnoty – view = @form
- renderForm() – kosmetika pro sablonu – $isUpdate
- metoda pro odeslani formulare – nacte, vyhodnoti, ulozi do objektu modelu a pak obj->save() – insert/update se stara model.