addConditionOn Error

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

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
+
0
-

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
+
0
-

@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.

despiq
Člen | 320
+
0
-

nerozumim tedy problemu

brazvo
Člen | 15
+
0
-

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.

despiq
Člen | 320
+
0
-

Vazne? A nekecas tak trochu? Zkousel si to?

toka
Člen | 253
+
0
-

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
+
0
-

@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.