název formu v metodě actionEdit?

AZJOL
Člen | 34
+
0
-

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
+
+1
-

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
+
0
-

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
+
0
-

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>