首页 > 解决方案 > $form->setData() 以什么格式接受控制器中的表单数据

问题描述

问题是将表单数据从客户端发送到 Zend 控制器之一。我想使用 Form 的 isValid() 方法来验证表单。但它总是返回 false。我想我无法为 $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 可以接受的正确格式是什么,我如何得到它?

标签: jqueryzend-frameworkframeworks

解决方案


修改声明为:

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

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

或者这样做:

$form->setData($this->getRequest()->getPost());

推荐阅读