Strata novych hodnot vo formulari po custom addRule (a nevypisanie message)
- JanB
- Člen | 21
Na specialnu podmienku potrebujem pridat custom addRule (viem ze nebudem mat JS validaciu) tak som chcel vyskusat priklad z dokumentacie kde som upravil typ objektu na „\Nette\Forms\Controls\TextInput“ ale z kodom nizsie mam 2 problemy:
- Ak zadana hodnota nie je liche cislo, tak sa mi formular po odoslani prepise so starymi hodnotami – vratane ceny. Ja by som chcel aby vsetky hodnoty ostali a zobrazil sa len (flash)error message. Co mam pre to urobit?
- Ten message sa mi nikde nezobrazi – flashmessage ale funguju spravne. Tusite preco?
$form->addText("price", "Cena")
->addRule(Form::INTEGER, '%label musí být číslo')
->addRule(function (\Nette\Forms\Controls\TextInput $control) {
return (bool) ($control->getValue() % 2);
}, 'Musíte uvést liché číslo');
Inak som to skusil aj cez „$form->onValidate[] = $this->validateInputForm;“ ale mam presne oba problemy ako pri custom addRule. Kde je chyba?
Dakujem!!!
Editoval JanB (6. 10. 2013 13:02)
- jiri.pudil
- Nette Blogger | 1032
Ad 1. Jakým způsobem plníš formulář výchozími hodnotami?
Ad 2. addRule() nevyvolá flash message, nýbrž přidá chybovou hlášku formulářovému prvku (ve 2.0 i celému formuláři) voláním addError(). V šabloně je můžeš vypsat např. takto:
{if $form['price']->hasErrors()}
<div class="error" n:foreach="$form['price']->getErrors() as $error">{$error}</div>
{/if}
- JanB
- Člen | 21
jiri.pudil napsal(a):
Ad 1. Jakým způsobem plníš formulář výchozími hodnotami?
Ad 2. addRule() nevyvolá flash message, nýbrž přidá chybovou hlášku formulářovému prvku (ve 2.0 i celému formuláři) voláním addError(). V šabloně je můžeš vypsat např. takto:
{if $form['price']->hasErrors()} <div class="error" n:foreach="$form['price']->getErrors() as $error">{$error}</div> {/if}
Vdaka za tipy, prisiel som na to ze som mal zle pomenovanu render metodu a tak sa mi nenastavovali default hodnoty, uz to funguje.
function renderEdit($id) {
$this['productInputForm']->setValues($this->myfilter($this->template->product));
}
Ten error div idem skusit pridat… Bude fungovat aj $form->getErrors() ?
Editoval JanB (6. 10. 2013 13:55)