【问题标题】:Zend Framework 2 - Custom Form ValidationZend Framework 2 - 自定义表单验证
【发布时间】:2012-12-05 16:55:58
【问题描述】:

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

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

它应该把它放在 vendor/ 作为一个似乎合乎逻辑的库。我使用了这个路径: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,
                      ),
                  ),
                ),
        )));
        ...

当我尝试提交表单时,我看到部分验证器代码为纯文本,并收到一个无法找到该类的致命错误...

【问题讨论】:

    标签: php validation zend-framework2


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      供应商名称:MyStuff

      FQCN:MyStuff\Validator\AwesomeValidator;

      文件路径:./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/"
          }
      }
      

      我希望这会给你足够的工作。

      【讨论】:

      • 这帮助很大!现在是最后一件事:如何在模型中使用验证器(即 Entity.php)。我坚持创建 InputFilter 的教程...我会更新我的帖子!
      • 如果没有看到您的自定义装饰器代码,我只能建议先执行$cv= new CustomValidator(array('min'=>1));,然后再执行'validators'=>array($cv)
      • 我的错……最后只是一个愚蠢的错误。谢谢你的帮助!
      • 每次我使用作曲家时,我的手册包含都会被删除。你能帮我看看如何“永久”安装它吗?谢谢!
      • 这是一个作曲家配置的东西。我建议使用两个标签 zend-framework2 和 composer 打开另一个问题,以便您获得更好的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多