Změna value submit tlačítka formuláře

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
pastyx
Člen | 25
+
0
-

Vytvářím jednoduchý formulář následovně:

<?php
protected function createComponentDrugForm() {
        $form = new Form;
        $form->addHidden('idlek')->setDefaultValue(-1);
        $form->addText('nazev', 'Název:')
                ->setRequired();
        $form->addTextArea('poznamka', 'Poznámka:');
        $form->addSubmit('send', 'Přidat');
        $form->onSuccess[] = array($this, 'drugFormSucceeded');
        return $form;
    }
?>

Tento formulář používám pro vytváření nových záznamů a následně i pro editaci některého ze stávajících. V takovém případě do formuláře nahraji data následovně:

<?php
$this['drugForm']->setDefaults($drug->toArray());
?>

Při odeslání takového formuláře se vyplní i skryté pole idlek a metoda drugFormSucceeded pozná, že se jedná o editaci.

To ale potřebuji dát vědět i uživateli a změnit value hodnotu send tlačítka z „Přidat“ na ¨Upravit".

Pro normální prvky formuláře funguje dobře:

<?php
$this['drugForm']['nazev']->setValue('Nový název'); // Změní
?>

Nicméně pro send submit tlačítko to nic neudělá:

<?php
$this['drugForm']['send']->setValue('Upravit'); // Nezmeni starou hodnotu value
?>

Dovedl by mi někdo poradit jak toho docílit ?

Předem děkuji za pomoc.

Editoval pastyx (2. 8. 2016 18:33)

docky
Člen | 59
+
+1
-

A co něco takového ?

$id = $this->getParameter('id');

if ($id) {
    $form->addSubmit('send', 'Upravit');
} else {
    $form->addSubmit('send', 'Přidat');
}

Editoval docky (2. 8. 2016 19:07)

pastyx
Člen | 25
+
+1
-

docky napsal(a):

A co něco takového ?

$id = $this->getParameter('id');

if ($id) {
    $form->addSubmit('send', 'Upravit');
} else {
    $form->addSubmit('send', 'Přidat');
}

To vyřeší můj problém, díky. Kdyby ještě někdo přišel na to jak měnit value toho submit tlačítka k existujícím formuláři, mohlo by to pomoci budoucím čtenářům postu :-)

David Matějka
Moderator | 6445
+
+2
-
$this['drugForm']['nazev']->caption = 'foo';