Yii2 上的自定义字段验证器客户端
Custom Field Validator Client Side on Yii2
当我尝试为我的输入添加自定义验证器规则时遇到了一些问题。
这是我的代码。
型号
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 中,当我编写测试时未在客户端验证
更新
在 Yupik Comment 之后,服务器端验证工作正常,所以如果我想添加客户端验证,我必须实现 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
因为这是服务器端验证器。要添加客户端验证器,请使用 whenClient
来检查是否应应用规则。
阅读更多 docs
当我尝试为我的输入添加自定义验证器规则时遇到了一些问题。 这是我的代码。
型号
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 中,当我编写测试时未在客户端验证
更新 在 Yupik Comment 之后,服务器端验证工作正常,所以如果我想添加客户端验证,我必须实现 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
因为这是服务器端验证器。要添加客户端验证器,请使用 whenClient
来检查是否应应用规则。
阅读更多 docs