Php 为什么这个Yii验证器不能工作?

Php 为什么这个Yii验证器不能工作?,php,yii,Php,Yii,您好,我正在尝试创建自己的表单验证程序,就像在默认配置上生成的LoginForm中的authenticate方法一样 public function rules() { return array( // username and password are required array('mnemonic, target_reg, source_reg', 'required'),

您好,我正在尝试创建自己的表单验证程序,就像在默认配置上生成的LoginForm中的authenticate方法一样

    public function rules()
    {
        return array(
                // username and password are required
                array('mnemonic, target_reg, source_reg', 'required'),
                // rememberMe needs to be a boolean
                array('target_reg_indirection, source_reg_indirection', 'boolean'),

                array('mnemonic','foo'),

        );
    }
下面是验证器方法:

    public function foo($attribute,$params){
          $this->addError('mnemonic', 'there was an error, you foo!');
      }    
这对我来说根本不管用。。。请注意我是如何添加了一条规则的,它不应该每次都有效。我只是想看看它是怎么工作的。但我从未在视图中看到错误消息。默认的验证器(如检查必填字段的验证器)可以正常工作


有什么想法吗?

因为不是所有的验证器都映射到客户端验证器

除此之外,我还创建了处理ajax表单验证的代码,并在CActiveForm中启用了ajaxValidation


所以现在一切都很好。我创建的验证器是通过ajax验证工作的。

我有同样的问题,在我的例子中,不是启用ajaxValidation,而是安全验证器和其他东西的混合

在这里,我发布了一些帮助我解决问题的阅读材料。希望这能帮助其他有同样问题的人

我读了一些关于安全验证器的书。 我理解AjaxValidation和ClientValidation之间的区别。 我创建了自己的验证器类。在谷歌上搜索自定义验证yii。
您发布的答案不是代码不工作的正确原因。你能在视图中显示你做了什么吗?以及您正在验证/保存的控制器操作?您不一定需要客户端验证器来显示错误消息,代码中还有一些其他错误。