Po nastavení setDisabled() u prvku Select nedojde ke spuštění funkce v $form->onSuccess[]
- br356
- Člen | 2
Funkce v presenteru:
$inputPolozka = $formular->getComponent(‘selectTyp’);
$inputPolozka->setDisabled();
$inputPolozka->setDefaultValue($typ);
definice ve formuláři:
$form->addSelect(‘selectTyp’, ‘Měřidlo:’, $typ)
->setDefaultValue(key($typ));
pokud není tato položka vypnutá, odeslání formuláře funguje, po
vypnutí položky se formulář neodešle. Nesetkal se s tímto prosím
někdo?
Děkuji za nasměrování kde by mohl být problém.
- br356
- Člen | 2
to setDisabled volám ve funkci handle…, vyřešil jsem to nakonec tak
trochu divoce že schovám prvek select a zobrazim text s požadovanou
hodnoutou.
Když jsem vypnul select prvek jakkoli (nevykreslil jsem ho, nastavil v html
disabled) tak se celý formulář neodeslal, předpokládám že to neprošlo
přes validaci. Nevím jestli je to problém jen u mně z nějakého důvodu
či je to bug v nette.
- Marek Bartoš
- Nette Blogger | 1280
Handler se ti při zpracování formuláře nezavolá, formulář má vlastní, interní handle. Zakázat prvek formuláře musíš nejpozději v action (nebo při vytváření kompontenty), aby to fungovalo při renderu i při zpracování formuláře.
To, že jsi prvek nevykreslil Nette neví – i kdyby si to evidovalo, tak
je riskantní z něj udělat nepovinný. A zpracování probíhá dřív než
render, takže to ani vědět nemůže.
Stejně tak nesmí brát ohled na html atributy – ty si může kdokoli
změnit přímo v prohlížeči, nebylo by to bezpečné.
Editoval Marek Bartoš (Včera 15:03)
- Marek Bartoš
- Nette Blogger | 1280
@mskocik A to má jakou souvislost? Prompt je jen nápověda pro uživatele, s validací nemá nic společného.
- MajklNajt
- Člen | 501
br356 napsal(a):
to setDisabled volám ve funkci handle…, vyřešil jsem to nakonec tak trochu divoce že schovám prvek select a zobrazim text s požadovanou hodnoutou.
Když jsem vypnul select prvek jakkoli (nevykreslil jsem ho, nastavil v html disabled) tak se celý formulář neodeslal, předpokládám že to neprošlo přes validaci. Nevím jestli je to problém jen u mně z nějakého důvodu či je to bug v nette.
ako som písal, volaj setDisabled()
v metóde
action...
(nie handle...
nie render...
nie nič iné) a problém je vyriešený, nemusíš robiť nič divoké
- mskocik
- Člen | 65
Marek Bartoš napsal(a):
@mskocik A to má jakou souvislost? Prompt je jen nápověda pro uživatele, s validací nemá nic společného.
Obecne máš pravdu. V prípade custom renderingu selectu by sa to nezvalidovalo. Ja som sa s tým už stretol.
$form = new Form();
$form->addSelect('select', 'Select', [
'q' => 'one',
'w' => 'two',
'e' => 'three'
]);
$form->addText('text', 'Text');
$form->addSubmit('save','Send');
{form form}
<select name="select">
<option value="">Prompt</option>
<option value="q">1</option>
<option value="w">2</option>
<option value="e">3</option>
</select>
{input text}
{input save}
{/form}