název formu v metodě actionEdit?
- AZJOL
- Člen | 34
Zdravím, potřeboval bych si vytvořit při editování záznamu trochu
pozměněný form oproti formu při vytváření záznamu. Vytvářím si teda
v metodě actionEditGroup($gid)
nový form. Mohli byste mi poradit
jak ho potom zavolám v latte šabloně pomocí n makra
<form n:name=>
???
Editoval AZJOL (5. 4. 2017 22:07)
- reflex
- Člen | 28
Ja to delam takhle, nevim jestli to je dobre :]
function buildForm($action) {
$form = new Form();
if($action == 'EDIT') {
// blabla
}
return $form;
}
function createComponentEditForm() {
return $this->buildForm('EDIT');
}
function createComponentAddForm() {
return $this->buildForm('ADD');
}
{control editForm}
<form n:name=editForm>
nebo
{control addForm}
<form n:name=addForm>
Editoval reflex (6. 4. 2017 9:29)
- johnnie
- Člen | 54
Ja nato používam Perzistentní parametry
napr.
/**
* ProductForm component.
*
* @return \Nette\Application\UI\Form
*/
protected function createComponentProductForm()
{
$form = new Form;
$form->addText('name', 'Názov produktu');
if ($this->id) {
$form->addSubmit('send', 'Uložiť');
} else {
$form->addSubmit('send', 'Vytvoriť');
}
$form->onSuccess[] = [$this, 'productFormSubmitted'];
return $form;
}
/**
* ProductForm processing.
*
* @param \Nette\Application\UI\Form $form
* @param $values
*/
public function ProductFormSubmitted($form, $values)
{
if ($this->id) {
// ulozenie do db
$this->flashMessage('Produkt upravený', 'alert-success');
} else {
// pridanie do db
$this->flashMessage('Produkt vytovrený', 'alert-success');
}
$this->redirect('this');
}
a v .latte pak uz len
{control productForm}
- Pavel Kravčík
- Člen | 1180
My často skrýváme ID do hidden
inputu. Změnu tlačítka pak
měníme přímo v šabloně. Je to jen text.
// createComponent
$form->addHidden('id');
// success
if($values->id)
<button n:href="save">
{if $form['id']->value}Editovat{else}Vytvořit{/if}
</button>