我使用的是独立的Zend Form(我没有使用完整版的ZF2 MVC),我已经指定了以下类来定义表单:
use Zend\Form\Annotation;
/**
* @Annotation\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty")
*/
class Student
{
/**
* @Annotation\Type("Zend\Form\Element\Text")
* @Annotation\Options({"label":"Student code"})
* @Annotations\Validator({"name":"Regex", "options":{"pattern":"/^[0-9]+$/"}})
* @Annotation\Required({"required":"true"})
*/
public $student_code;
}
这是我控制器中的相关代码(简化为仅显示相关部分)
public function createAction()
{
$request = $this->getRequest();
$student = new Student();
$builder = new AnnotationBuilder();
$form = $builder->createForm($student);
$form->bind($student);
$form->setData($request->getPost());
if ($form->isValid()) {
var_dump($form->getPost());
}
}
问题在于,当我提交表单并使用'abc'作为student_code的值时,表单返回为有效。根据正则表达式,它应该只接受数字。
所需部分有效;如果student_code为空,则表单无效。我的问题是,我错过了正则表达式无法正常工作的内容吗?
答案 0 :(得分:0)
替换为:
@Annotation\Validator({"name":"Regex", "options":{"pattern":"/^[0-9]+$/"}})
请注意,我已从@Annotation
删除了最后的s