Formulář – radio vrací NULL místo hodnoty value

Rndoom04
Člen | 75
+
0
-

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

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

lightteka napsal(a):

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.

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. :)