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