【发布时间】:2017-05-05 07:05:42
【问题描述】:
我在表单中使用用户名字段,我设置如下规则。
['username', 'required','when' => function($model) {
return $model->pin == true;
}],
(即)当属性引脚变为真时,只有我需要用户名字段,所有在客户端都工作正常,但在服务器端验证失败,我的代码有什么问题。
更新:
控制器代码
public function actionTest()
{
$model = new Test();
if ($model->load(Yii::$app->request->post()) && $model->customValidation()) {
if($model->validate())
{
//
}
}
return $this->render('testView', [
'model' => $model,
]);
}
型号
public $username;
public $pin = false;
public function rules()
{
return [
['username', 'required','message' => 'You must enter username','when' => function($model) {
return $model->pin == true;
}],
];
}
public function customValidation()
{
if()
{
$this->pin = true;
return false;
}
else
{
return true;
}
}
查看
if($model->pin)
{
<?= $form->field($model, 'username')->textInput(); ?>
}
【问题讨论】:
-
你确定它在服务器端失败了吗?而不是在客户端?它的编写方式表明它不应该在客户端工作。
-
是的,当我打开 firebug 并更改字段 id 时它不起作用
-
您的
customValidation()方法有效吗?空if ()以错误结尾... -
不,它不是空的,有一些验证,抱歉不便
-
所以...也许它不起作用,因为
customValidation()返回false?在这种情况下,根本不会调用$model->validate()。
标签: validation yii yii2 yii2-advanced-app rule