Formulář – radio vrací NULL místo hodnoty value
- Rndoom04
- Člen | 75
Dobrý večer,
řeším formuláře a tak nějak nechápu z jakýho důvodu mi radio vrací NULL výsledek.
Řěším to následovně.. Presenter:
protected function createComponentDeliveryPaymentForm()
{
$form = new UI\Form;
$form->setMethod("post");
$form->addRadioList('deliveryPayments', 'Doprava a platba');
$form->addText('test', 'Test');
$form->addSubmit('save', 'Uložit');
$form->onSuccess[] = [$this, 'DeliveryPaymentFormSucceeded'];
return $form;
}
public function DeliveryPaymentFormSucceeded(UI\Form $form, \stdClass $values)
{
dump($values);
}
A v šabloně takto:
{form deliveryPaymentForm}
{input test}
<input type=radio n:name="deliveryPayments:1">
{/form}
.. Tu jedničku pak nahradím proměnnou.. :)
To mi vygeneruje toto:
<form action="/kosik/osobni-udaje" method="post" id="frm-deliveryPaymentForm">
<input type="text" name="test" id="frm-deliveryPaymentForm-test">
<input type="radio" name="deliveryPayments" id="frm-deliveryPaymentForm-deliveryPayments-1" checked="" value="1">
<input type="submit" name="save" value="Uložit">
</form>
No a při odeslání formuláře mi dump hodí toto:
Nette\Utils\ArrayHash #c24d
deliveryPayments => null
test => "Testovací řetězec"
Co kde mohu dělat špatně, že deliveryPayments mi to vrátí „nullový“ a ne hodnotu value? Děkuji za pomoc a přeji hezký večer. :)
- lightteka
- Backer | 17
Jaky ma smysl delat radioList s jednou hodnotou?
Do addRadioList
bys mel jako treti parametr poslat pole moznych
hodnot (pripadne na tom addRadioList
zavolat jeste
->setItems()
), kdyz tam nic nepredas, tak se tam hodi
null
.
https://api.nette.org/…ntainer.html#…
Zrejme se tam deje to, ze z formulare se odesle
deliveryPayments => 1
, ale nette formular nevi, ze tam tu
hodnotu 1 chces, tak ji odfiltruje. Kdyz si v tom onSuccess
callbacku zavolas dump($form->getHttpData())
, tak tam tu vlastni
hodnotu budes mit.
Editoval lightteka (22. 1. 2019 0:03)
- Rndoom04
- Člen | 75
lightteka napsal(a):
Jaky ma smysl delat radioList s jednou hodnotou?
Do
addRadioList
bys mel jako treti parametr poslat pole moznych hodnot (pripadne na tomaddRadioList
zavolat jeste->setItems()
), kdyz tam nic nepredas, tak se tam hodinull
.https://api.nette.org/…ntainer.html#…
Zrejme se tam deje to, ze z formulare se odesle
deliveryPayments => 1
, ale nette formular nevi, ze tam tu hodnotu 1 chces, tak ji odfiltruje. Kdyz si v tomonSuccess
callbacku zavolasdump($form->getHttpData())
, tak tam tu vlastni hodnotu budes mit.
Jedna hodnota tam nebude. Budu tam mít foreach s různýma hodnotama. Tedy mi to vypíše desítky možností (samozřejmě s aktivním slovním filtrem přes jQuery). Sem jsem to dával jen úryvek pro zjednodušení.
O třetím parametru vím, že by se měl zadat, ale když ho znám až při renderu? Mohl bych zavolat dvakrát tu stejnou metodu (v renderu – protože ji potřebuju vykreslovat a ve formu), ale to mi přijde nesmyslné. Vím, že někde něco budu dělat složitě nebo na něco zapomínám. Ale s mými znalostmi bych musel jednu věc řešit dvakrát. :/ Nějak začít musím. :)
$form->getHttpData()
pomohlo, děkuji moc. :)