Zend Framework 2 - 自定义表单验证

时间:2012-12-18 13:08:29

标签: php validation zend-framework2

我需要自定义表单验证。所以我写了一个类似于this的函数。

到目前为止一切顺利。但我真的有问题放在哪里放PHP文件/类。

它应该把它放在供应商/作为一个似乎合乎逻辑的lib。我使用了这条路径:vendor / company / Validator / MyValidator.php。但我无法弄清楚如何包括我的课程。

有人可以给我一个简短的设置供应商模块的方法或使用自定义验证器所需的任何内容吗?

互联网上有很多教程,但大多数都是处理验证的逻辑,而不是Zend的“基础”。

谢谢!

修改

我找到了this link并按如下方式配置了我的代码:

我的代码如下:

        use MyStuff\Validator\CustomValidator as CustomValidator;
        ...
        $inputFilter->add($factory->createInput(array(
            'name'     => 'zip',
            'required' => false,
            'filters'  => array(
                array('name' => 'Int'),
            ),
             'validators' => array(
                  array(
                      'name' => array( new CustomValidator ),
                      'options' => array(
                          'min' => 1,
                      ),
                  ),
                ),
        )));
        ...

当我尝试提交表单时,我将部分验证器代码视为纯文本,并且发现了无法找到该类的致命错误...

2 个答案:

答案 0 :(得分:4)

我现在将假设一个目录结构。

供应商名称:MyStuff

FQCN:MyStuff\Validator\AwesomeValidator;

FilePath:./vendor/mystuff/library/MyStuff/Validator/AwesomeValidator

鉴于Zend Framework 2遵循PSR-0 Standard进行自动加载,您需要将自动加载器路径添加到供应商自动加载器中。 ZF2使用Composer来处理自动加载。通过Composer安装OWN Vendor时,会自动完成。如果您需要手动执行此操作,请在composer.json

中执行此操作
"autoload": {
    "psr-0": {
        "Mystuff\\": "vendor/mystuff/library/"
    }
}

我希望这会给你足够的帮助。

答案 1 :(得分:0)

使用composer的替代方法是一种更加手动的方法,可以避免您的包含问题。此页面上的评论可能有助于向您显示手动放置的位置: http://framework.zend.com/manual/2.0/en/modules/zend.validator.writing-validators.html