我想验证我通过Ajax提交的表单,但这对我不起作用。请帮忙解决这个问题。
在我使用的注释构建器中:
<?php
namespace Application\Model;
use Zend\Form\Annotation;
/**
* @Annotation\Name("sejour")
* @Annotation\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty")
*/
class Sejour {
public $id;
/**
* @Annotation\Validator({"name":"StringLength", "options":{"min":1, "max":3}})
*/
public $titre;
public $agenceId;
public $agenceLibelle;
public function exchangeArray($data)
{
$this->id = (isset($data['id'])) ? $data['id'] : null;
$this->titre = (isset($data['titre'])) ? $data['titre'] : null;
$this->agenceId = (isset($data['agenceId'])) ? $data['agenceId'] : null;
$this->agenceLibelle = (isset($data['agenceLibelle'])) ? $data['agenceLibelle'] : null;
}
}
在我的控制器文件中:
$values = json_decode(file_get_contents('php://input'), true);
$builder = new AnnotationBuilder();
$entity = new Sejour();
$form = $builder->createForm($entity);
$form->bind($entity);
$form->setData($values);
if ( $form->isValid()) {
/* save datas in base */
}else{
$errors = $form->getMessages();
print_r($errors);
}
每次我都没有错误
请帮帮我
由于
答案 0 :(得分:0)
这是一个很好的例子。
http://samsonasik.wordpress.com/2012/10/11/zend-framework-2-using-zend-form-and-ajax/
试试这个
答案 1 :(得分:0)
根据您的Zend Framework 2版本,您可能会遇到preferFormInputFilter标志已更改它在zf2 2.2.4中的默认值这一事实。
该标志规定了表单的行为,决定在验证过程中,表单是否应使用自己的输入过滤器(事先已提供)或每个元素提供的过滤器。
使用AnnotationBuilder创建的表单的默认设置是将标志设置为true,因此,由于您在实际设置过滤器的位置粘贴了任何代码,因此默认过滤器为none。
您可能希望通过添加以下内容为添加的元素启用默认元素过滤器:
$form->setPreferFormInputFilter(FALSE);
创建表单后。
另一种选择当然是为表单提供实际的输入过滤器。