PHP Nette AJAX - dynamický formulář s multiselect - neposílá hodnoty (This field is required)

Co nejvíce stručné řešení pro vývojáře a linux administrátory

Na superuser.cz nenaleznete žádný zbytečný obsah, vždy se jde přímo k věci, denně se zde objevují nové problémy a jejich řešení...

Začít používat

PHP Nette AJAX - dynamický formulář s…

23.12.2019 napsal Mučedník

Vyřešeno PHP Nette AJAX - dynamic form with multiselect - not post data (This field is required)
Dobrý den,

mám v mojí PHP Nette aplikaci formulář, který se překresluje pomocí AJAX ve snippetu a obsahuje multiselect. Překreslení ajaxem probíhá v pořádku a formulář obsahuje správná data, avšak při odeslání dostávám stále dokola hlášku This field is required. Data jsou však skutečně odeslána, ale metoda succeeded je nepřijme. Konkrétně pole array z muliselect pro proměnnou $acl_resource je prázdné - Tracy v kontejneru ale POST data vidí....

Toto je výstup:
---------------------------
DUMP $values v aplikaci
---------------------------

Nette\Utils\ArrayHash

acl_tag => "group1" (6)
acl_resource => array ()
acl_role => "powerusers" (10)





---------------------------
TRACY CONTAINER
---------------------------

httpData private =>

acl_resource =>
0 => "dfgdgfdfdg"
1 => "Fdfsdfsdf5"
2 => "fdgfdgfdg"
3 => "sfdgfdgdfgd"
send => "Změnit"
_token_ => "1dia9tcaqlQh5bfs9zHm9mrM8Cnvi0j+b+Bg4="
acl_tag => "group1"
acl_role => "powerusers"
_do => "permissionsMultiEditForm-submit"



The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

PHP Nette AJAX - dynamic form with multiselect - not post data (This field is required)

Hello,


I have a form in my PHP Nette application that is redrawn using AJAX in a snippet and contains multiselect. Ajax repainting is in order and the form contains the correct data, but when I send it over and over the message This field is required. However, the data is actually sent, but the succeeded method does not accept it. Specifically, the array field from muliselect for $ acl_resource is empty - Tracy in the container but POST data sees ....

This is the output:
---------------------------
DUMP $values in app
---------------------------

Nette\Utils\ArrayHash

acl_tag => "group1" (6)
acl_resource => array ()
acl_role => "powerusers" (10)





---------------------------
TRACY CONTAINER
---------------------------

httpData private =>

acl_resource =>
0 => "dfgdgfdfdg"
1 => "Fdfsdfsdf5"
2 => "fdgfdgfdg"
3 => "sfdgfdgdfgd"
send => "Změnit"
_token_ => "1dia9tcaqlQh5bfs9zHm9mrM8Cnvi0j+b+Bg4="
acl_tag => "group1"
acl_role => "powerusers"
_do => "permissionsMultiEditForm-submit"



Zobrazit odpovědi

Nejlépe hodnocení uživatelé
Hanz

Počet UP: 5142

React: 224

Rusty

Počet UP: 2365

React: 105

OL3G

Počet UP: 1651

React: 65

Strosmajer

Počet UP: 502

React: 31

Oxytocin

Počet UP: 303

React: 27

SYSTEM

Počet UP: 443

React: 27

Hyacint

Počet UP: 43

React: 22

Odpovědi na dotaz

RE: PHP Nette AJAX - dynamický…

31.12.2019 odpověděl Hyacint (update 24.02.2020)

Zkontrolováno

Dobrý den,

data ($values) z formu z multiSelect (tzn. array - pole) překresleného AJAXem je v Nette třeba brát v surové (raw) podobě přes getHttpData:


ŘEŠENÍ
---------------------------

public function permissionsMultiEditFormSucceeded($form, $values)
{
$data = $form->getHttpData(form::DATA_LINE, 'acl_resource[]');
dump($data);
}


The English language is translated by machine - the translator can modify eg cited codes = it is better to use codes from the Czech original.

PHP Nette AJAX - dynamic form with multiselect - not post data (This field is required)

Good day,

data ($values) from the form from multiSelect (ie array) redrawn by AJAX must be taken in raw form via getHttpData:


SOLUTION
---------------------------

public function permissionsMultiEditFormSucceeded($form, $values)
{
$data = $form->getHttpData(form::DATA_LINE, 'acl_resource[]');
dump($data);
}


Tento web používá k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Používáním tohoto webu s tím souhlasíte. Další informace