简体   繁体   English

Yii2上的自定义字段验证器客户端

[英]Custom Field Validator Client Side on Yii2

I have some trouble when i try to add a custom Validator rule for my input. 我尝试为输入添加自定义验证程序规则时遇到麻烦。 This is my code. 这是我的代码。

MODEL 模型

class Category extends \yii\db\ActiveRecord{

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'cat';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['cat_cod','cat_deep','cat_father'], 'required'],
            //other rules
            [['cat_cod'], 'test'],

        ];
    }
    public function test($attribute){
        $cat_cod = $this->$attribute;
        if($cat_cod == 'test'){
            $this->addError($attribute,"Error Test");
        }
    }

So, this is only a test, but it works fine when i submit my form, but it doesn't work in client side validaton. 因此,这只是一个测试,但是当我提交表单时它可以正常工作,但是在客户端验证中不起作用。

if cat_cod is empty: 如果cat_cod为空:

cat_cod为空

if i write test in the input field 如果我在输入字段中编写测试

在此处输入图片说明

In the 2 image when i write test doesn't validate on client side 在2图像中,当我编写测试时,无法在客户端进行验证

UPDATE Afte Yupik Comment, server side validation works fine, so if i want to add client side validation i must implement an AjaxValidation. 更新后 ,服务器端验证工作正常,因此,如果我想添加客户端验证,则必须实现AjaxValidation。 So i've activated ajax validation in only one field like this 所以我只在这样的一个字段中激活了ajax验证

$form->field($model, 'cat_cod',['enableAjaxValidation' => true])->textInput();

Now in my controller how can i handle this? 现在在我的控制器中该如何处理? Documentation is not very clear. 文档不是很清楚。 This is What i've try 这就是我尝试过的

if($model->load(Yii::$app->request->post()) && $model->validate()){
        if (Yii::$app->request->isAjax ) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        }
   //something else

Because this is server side validator. 因为这是服务器端验证器。 To add client side validator use whenClient to check whether rule should be applied. 要添加客户端验证器,请使用whenClient来检查是否应应用规则。 Read more docs 阅读更多文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM