在isValid之后的zf2表单绑定

时间:2014-08-27 12:15:52

标签: php zend-framework2

我刚从zf1转到zf2,一些简单的任务让我很头疼。 我的表单上有一些过滤器。过滤器正在表单上运行isValid函数,并且在运行此函数之后,我希望过滤后的数据重新绑定到表单。

我使用的是zend framework 2.2.7

这是我的控制器代码:

<?php

namespace Test\Controller;

use Test\Entity\Product;
use Test\Form\CreateProduct;
use Zend\Mvc\Controller\AbstractActionController;

class TestController extends AbstractActionController
{

    public function indexAction()
    {
      $form = new CreateProduct();
         $product = new Product();
         $form->bind($product);

         $request = $this->getRequest();
         if ($request->isPost()) {
             $form->setData($request->getPost());

             if ($form->isValid()) {
                 var_dump($product);
             }
             $form->bind($product); // manual rebind seems to work but look hackish 

         }

         return array(
             'form' => $form,
         );
    }
}

1 个答案:

答案 0 :(得分:1)

如果你愿意&#34;重新绑定&#34;返回表单的数据(在验证失败后)使用$form->populateValues()

$request = $this->getRequest();
if( $request->isPost() )
{
    if( $form->isValid() )
    {
        $validatedFormData = $form->getData();
        // do something

    } else {

        // populate posted values to form
        $form->populateValues($request->getPost());

        // fetch form errors $form->getMessages()
        // whatever
    }
}