Formulář – dynamická pole se nezpracuji
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- KillPrd
- Začátečník | 110
Ahoj v componente formuláře si vytvořím dynamicky 8 položek a rád bych je zpracoval nicméně pri odeslání formuláře to tyto pole nenajde hlásí to že neexistují.
<?php
for($i = 1;$i<=count($sql2);$i++){
$form->addCheckbox('stat'.$i, 'Aktivní?:')->setValue(@$sql2[$i]->stat);
$form->addText('nazev'.$i, 'Název banner:')->setValue(@$sql2[$i]->nazev);
$form['nazev'.$i]->setOption('description', 'Druh baneru:'.($i == '0'?'240x150 v levo nad boxama':'').($i == '1'?'240x150 v pravo nad boxama':'')
.($i == '2'?'115x? v pravo v liště':'')
.($i == '3'?'115x? v pravo v liště':'')
.($i == '4'?'115x? v pravo v liště':'')
.($i == '5'?'115x? v pravo v liště':'')
.($i == '6'?'768x60 v pravo v liště':'')
.($i == '7'?'768x60 v pravo v liště':''));
$form->addTextArea('clanek'.$i, 'Script nebo text:')->setValue(@$sql2[$i]->clanek);
$form->addFile('file_name'.$i,'Img nebo swf:')
->addCondition(Form::FILLED, 'Musíte vložit soubor!')
->addRule(Form::FILLED, 'Musíte vložit soubor!');
}
?>
nenašel jsem nikde jak tohle ošetřit…
- bojovyletoun
- Člen | 667
v čem je problém? mě to jde takto
"stat1" => TRUE
"nazev1" => "wq" (2)
"clanek1" => "sa" (2)
"stat2" => TRUE
"nazev2" => ""
"clanek2" => "sdf" (3)
"stat3" => FALSE
není lepší použít Containery?
$cont=$from->addcontainer()
To si vlož do cyklu a v něm
místo form užij cont. Resp pak smaž ty $i uvnitř.
potom:
ray(8) {
1 => array(3) {
"stat1" => FALSE
"nazev1" => ""
"clanek1" => ""
}
2 => array(3) {
"stat2" => FALSE
"nazev2" => ""
"clanek2" => ""
}
jinak tamty špagety jsou takový antipattern, co brání použit pole?
PS. tohle ještě nejsou ty pravé dynamické formuláře. Pro opravdové d.f si najdi DynamicContainer(addon).
Editoval bojovyletoun (25. 1. 2011 17:48)
- KillPrd
- Začátečník | 110
změnil jsem to jak si psal a stejně je nevypíše.
<?php
for($i = 1;$i<=count($sql2);$i++){
$cont=$form->addcontainer($i);
$cont->addCheckbox('stat', 'Aktivní?:')->setValue(@$sql2[$i]->stat);
$cont->addText('nazev', 'Název banner:')->setValue(@$sql2[$i]->nazev);
$cont['nazev']->setOption('description', 'Druh baneru:'.($i == '0'?'240x150 v levo nad boxama':'')
.($i == '1'?'240x150 v pravo nad boxama':'')
.($i == '2'?'115x? v pravo v liště':'')
.($i == '3'?'115x? v pravo v liště':'')
.($i == '4'?'115x? v pravo v liště':'')
.($i == '5'?'115x? v pravo v liště':'')
.($i == '6'?'768x60 v pravo v liště':'')
.($i == '7'?'768x60 v pravo v liště':''));
$cont->addTextArea('clanek', 'Script nebo text:')->setValue(@$sql2[$i]->clanek);
$cont->addFile('file_name','Img nebo swf:')
->addCondition(Form::FILLED, 'Musíte vložit soubor!')
->addRule(Form::FILLED, 'Musíte vložit soubor!');
}
?>