addConditionOn Error
- brazvo
- Člen | 15
Ahoj,
zase mam maly problem a neviem ci robim chybu ja, alebo je to proste takto dane, mam tento kod:
<?php
$form->addText('ps_nadpis_menu', 'Nadpis pre menu:')
->addConditionOn($form['ps_zobrazovat'], Form::EQUAL, TRUE) // ak je zasktnuty
->addRule(Form::FILLED, 'Zvolili ste zobrazovať, zadajte Nadpis pre menu');
$form->addText('ps_priorita', 'Priorita:', 1,2)
->setEmptyValue(0)
->addRule(Form::NUMERIC, 'Zadajte číslo');
$form->addCheckbox('ps_zobrazovat', 'Zobrazovať (v menu):');
?>
Po spusteni mi to vyhodi chybu, ze to nepozna prvok ps_zobrazovat, ked
zakomentujem podmienku
addConditionOn, tak sa formular vykresli. Ma to takto fungovat?
Je nutne deklarovat prvok ps_zobrazovat pred volanim
addConditionOn? Ak ano, tak potom by som navrhoval nieco ako
dodatocne addRule a potom by posledny riadok kod mohol
vyzerat:
<?php
$form->addCheckbox('ps_zobrazovat', 'Zobrazovať (v menu):')
->addCondition(Form::EQUAL, TRUE)
->addRuleOn($form['ps_nadpis_menu'], Form::FILLED);
?>
Ak take nieco uz je, tak super, len ma nasmerujte. Niekedy je dost nesikovne a neesteticke davat Check Boxy, koli validacii niekde pred prvok, ktory ma byt potom testovany.
B.
Editoval brazvo (24. 2. 2010 2:43)
- despiq
- Člen | 320
ty estéte
<?php
$form = new \Nette\Application\AppForm($this, $name);
$form->addText('ps_nadpis_menu', 'Nadpis pre menu:');
$form->addText('ps_priorita', 'Priorita:', 1,2)
->setEmptyValue(0)
->addRule(\Nette\Application\AppForm::NUMERIC, 'Zadajte číslo');
$form->addCheckbox('ps_zobrazovat', 'Zobrazovať (v menu):');
$form['ps_nadpis_menu']->addConditionOn($form['ps_zobrazovat'],AppForm::EQUAL, TRUE) // ak je zasktnuty
->addRule(AppForm::FILLED, 'Zvolili ste zobrazovať, zadajte Nadpis pre menu');
?>
- brazvo
- Člen | 15
@despiq
No tak na toto som prisiel aj ja, ale to je presne to co ten formular rozhadzuje. Totizto ten kod nebol kompletny a okrem polozky ps_nadpis_menu je tam aj polozka ps_nadpis. Jedna sa totizto jednoduchy form na spravu obsahu podstranky a strukturu ma takuto:
Nadpis (zobrazuje sa na stranke ako titulok)
Nadpis pre menu (zobrazuje sa ako polozka menu)
Text stranky
Zobrazovat? (Ma sa zobrazit v menu?)
Priorita (na akom mieste v menu sa ma zobrazit)
No a je trosku nelogicke a neesteticke :) mat tie nadpisy od seba, no ale budem to musiet asi prekopat a Prioritu a Zobrazit? na zaciatok formu, aj ked taka moja logika vyplnovania formu je, ze najprv vyplnim form a potom urcim podmienky zobrazovania. Mam to mozno vzite z X formov, ktore som na nate vyplnoval, ze najprv som vyplnil nejake chlieviky a potom som zaskrtaval, ci chcem byt infomovny o novikach, o aktualizaciach a podobne…
B.
- brazvo
- Člen | 15
Problem je, ze s tvojim riesenim by formular vypadal takto:
Nadpis (zobrazuje sa na stranke ako titulok)
Text stranky (TextArea)
Zobrazovat? (Ma sa zobrazit v menu?)
Nadpis pre menu (zobrazuje sa ako polozka menu)
Priorita (na akom mieste v menu sa ma zobrazit)
Toto je sice funkcne, ale neesteticke a logicka postupnot vyplnovania
formularu je rozhadzana.
Pouzi trosku imaginacie a predstav si to vykreslene na obrazovke.
- toka
- Člen | 253
brazvo napsal(a):
Problem je, ze s tvojim riesenim by formular vypadal takto:
Nadpis (zobrazuje sa na stranke ako titulok)
Text stranky (TextArea)
Zobrazovat? (Ma sa zobrazit v menu?)
Nadpis pre menu (zobrazuje sa ako polozka menu)
Priorita (na akom mieste v menu sa ma zobrazit)Toto je sice funkcne, ale neesteticke a logicka postupnot vyplnovania formularu je rozhadzana.
Pouzi trosku imaginacie a predstav si to vykreslene na obrazovke.
Vykreslí se přeci přesně jak chceš, jen podmínku určíš na konci :-)
- brazvo
- Člen | 15
@despiq
Omluvam sa Proste som myslel ze mam lepsiu foto pamat ;) Kedze
ty si si to poupravoval s tym AppForm, tak ja som si to nekopiroval, ale
upravoval rucne a neviem preco som dospel k vysledku ako predtym, teraz uz
vidim, ze ten zazrak je na riadku:
<?php
$form['ps_nadpis_menu']->addConditionOn($form['ps_zobrazovat'],AppForm::EQUAL, TRUE) // ak je zasktnuty
->addRule(AppForm::FILLED, 'Zvolili ste zobrazovať, zadajte Nadpis pre menu');
?>
Sorry a diki,
B.