Podmíněná hodnota (->addConditionOn… ->setDefaultValue)
- Tomáš Votruba
- Moderator | 1114
Zdravím, mám třeba kalkulačku platových tříd a na základě výběru třídy chci do dalšího pole nastavit výši platu.
<?php
$form->addSelect("trida","Vaše třída",$tridy);
$form->addText("zakladníPlat","Plat:")
->addConditionOn($form["trida"],Form::EQUAL,1)
->setDefaultValue("15000");
?>
To mi vrací chybu
Call to undefined method Nette\Forms\Rules::setValue()
, takže se
(zřejmě) potřebuji dostat o úroveň výše, ale nevím jak.
- Filip Procházka
- Moderator | 4668
Nette formuláře nic takového neumí. Vůbec.
Musíš si to napsat v javascriptu a udělat si sám i obsluhu v
onSuccess
.
- Mikulas Dite
- Člen | 756
A nešlo by
$form->addText("zakladníPlat","Plat:")
->setValue($form["trida"]->value === 1 ? "15000" : $form['trida']->value);
- Filip Procházka
- Moderator | 4668
To by šlo, ale počítá to s tím, že formulář připojíš před
přidáním tohohle prvku. Což není pěkné (jsem zjistil). Když už, tak
raději do action
.
- Patrik Votoček
- Člen | 2221
HosipLan napsal(a):
To by šlo, ale počítá to s tím, že formulář připojíš před přidáním tohohle prvku. Což není pěkné (jsem zjistil).
Ehm?
- Filip Procházka
- Moderator | 4668
@**Patrik Votoček**:
To by šlo, ale počítá to s tím, že formulář připojíš před přidáním tohohle prvku.
Pokud formulář nepřipojíš takto
$form = new Form($this, $name);
nebo
$form[$name] = new Form;
nemůžeš číst jeho hodnoty:
$form->addText("zakladníPlat","Plat:")
->setValue($form["trida"]->value === 1 ? "15000" : $form['trida']->value);
Což není pěkné (jsem zjistil)
Dřív jsem formuláře připojoval jenom takto, protože jsem si do nich pak
mohl dávat podmínky tohohle typu. Ale přestalo se mi to líbit, když jsem
začal používat formuláře jako plnohodnotné komponenty (potomky
UI\Form
), sestavené z jiných plnohodnotných komponent (potomky
Forms\Container
), nejčastěji pomocí builderů.
attached
je úžasná metoda :)