我刚从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,
);
}
}
答案 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
}
}