Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework 2表单,未应用正则表达式验证_Php_Regex_Validation_Zend Framework2_Zend Form2 - Fatal编程技术网

Php Zend Framework 2表单,未应用正则表达式验证

Php Zend Framework 2表单,未应用正则表达式验证,php,regex,validation,zend-framework2,zend-form2,Php,Regex,Validation,Zend Framework2,Zend Form2,我使用的是独立的Zend表单我没有使用完整的ZF2 MVC,我指定了以下类来定义表单: use Zend\Form\Annotation; /** * @Annotation\Hydrator("Zend\Stdlib\Hydrator\ObjectProperty") */ class Student { /** * @Annotation\Type("Zend\Form\Element\Text") * @Annotation\Options({"label":

我使用的是独立的Zend表单我没有使用完整的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”作为学生代码的值时,表单返回为有效。根据正则表达式,它应该只接受数字

所需的部分工程;如果学生代码为空,则表单无效。我的问题是,正则表达式不起作用,我遗漏了什么?

替换为:

 @Annotation\Validator({"name":"Regex", "options":{"pattern":"/^[0-9]+$/"}})
请注意,我已从@Annotation中删除了结尾处的s