В каком формате $ form-> setData () принимает данные формы в контроллере - PullRequest
0 голосов
/ 20 апреля 2019

Проблема заключается в отправке данных формы с клиента на Zend Controller. Я хочу проверить форму, используя метод isValid () формы. Но это всегда возвращает ложь. Я думаю, что я не могу дать данные правильного формата для $ formData-> setData (). Подробности приведены ниже.

 .....
var fData = $('#responsibleAddressForm').serializeArray();
$.ajax({ 
       url:        '/vvt/controller      /storeResponsibleAddress', 
       data:    fData,
       type:       'POST',  
       dataType:   'json', 
       async:      true, 
       success: function(controller) { 
                  alert("in success!");
            //$("#wpno-vvt-contacts").html(contactsHtml);

                    }, 
       error : function(xhr, textStatus, errorThrown) { 
                       alert('Ajax request failed.'); 
                    } 
                 }); 
.....
But when I try to validate the form data on controller, as follows:

....

    if($this->getRequest()->isPost())
    {
        // Fill in the form with POST data
        $form    = new ControllerForm($this->entityManager);
        $view->setTerminal($request->isXmlHttpRequest());

        $data = $this->params()->fromPost();

        $form->setData($data);
        // Validate form
        if($form->isValid()) {
 .....

isValid всегда ложно. Я предполагаю, что он возвращает false, потому что я даю строку, закодированную в URL, которая не является правильным форматом, который принимает setData. Теперь, если это причина, то каков правильный формат, который приемлем для setData и как мне это получить?

1 Ответ

1 голос
/ 05 июня 2019

Изменить строку, указанную как:

$data = $this->params()->fromPost();

Для

$data = $this->params()->fromPost()->toArray();

Или сделайте это:

$form->setData($this->getRequest()->getPost());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...