当我尝试为输入添加自定义Validator规则时,我遇到了一些麻烦。 这是我的代码。
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");
}
}
所以,这只是一个测试,但是当我提交表单时它工作正常,但它在客户端验证中不起作用。
如果cat_cod为空:
如果我在输入字段中编写测试
在我写测试的2图像中,在客户端没有验证
更新 Afte Yupik评论,服务器端验证工作正常,所以如果我想添加客户端验证,我必须实现AjaxValidation。 所以我只在一个字段中激活了ajax验证,如此
$form->field($model, 'cat_cod',['enableAjaxValidation' => true])->textInput();
现在在我的控制器中我该如何处理?文档不是很清楚。 这就是我尝试的内容
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