Neprechadzaju niektore hodnoty z odoslaneho formulara
- rewerz
- Člen | 7
Zdravim, zacinam s nette a mam dost zaujimavy problem s formularom. V presenteri mam nieco taketo:
<?php
...
$container = $form->addContainer('fields');
$fields = $this->getProductFieldInputs($_GET['catId']);
foreach($fields AS $key => $field){
$label .= $field[3] != '' ? $field[0].' ('.$field[3].')' : $field[0];
$container->addText('product_field_'.$key, $label);
}
...
?>
V latte potom:
...
<div n:foreach="$form['fields']->controls as $field" class="row">{label $field /}{input $field}</div>
...
inputy sa vytvoria vporiadku, atribut name je OK aj label je OK. avsak po odoslani formulara a naslednom vydumpovani hodnot formulara tam tieto hodnoty nevidim. pritom ostatne odoslane hodnoty formulara tam su a su vporiadku. problem robia len tieto vytvarane vo foreach. robim nieco nespravne?
- CZechBoY
- Člen | 3608
Asi by to chtělo víc kodu.
Zkopíroval jsem ten tvůj kod do čistýho nette projektu a vše je ok.
class HomepagePresenter extends Presenter
{
protected function createComponentForm()
{
$form = new Form;
$container = $form->addContainer('fields');
for($i = 0; $i < 5; $i++) {
$container->addText('product_field_' . $i, $i);
}
$form->addSubmit('send');
$form->onSubmit[] = function(Form $form) {
\Tracy\Debugger::barDump($form->getValues(true));
};
return $form;
}
}
{block content}
{form form}
<div n:foreach="$form['fields']->controls as $field" class="row">{label $field /}{input $field}</div>
{input send}
{/form}
{/block}
array (1)
fields => array (5)
product_field_0 => "1"
product_field_1 => "2"
product_field_2 => "3"
product_field_3 => "4"
product_field_4 => "5
Editoval CZechBoY (22. 9. 2016 20:58)
- Šaman
- Člen | 2666
A máš ten parametr catId
i v adrese po odeslání
formuláře? (Zjistíš tak, že z neprovedeš redirect.) Jestli ne, tak to je
tím. Nette si kontroluje data z formuláře a validuje je proti samotnému
formuláři, takže i po odeslání musí mít catId
, aby si dalo
dohromady původní podobu formuláře. (Je to ochrana proti podstrčení
nevyžádaných hodnot.)
P.S. A nepoužívej přímo pole GET, ale
$this->getParameter('catId')
.
Editoval Šaman (23. 9. 2016 0:57)