我试图在模型中使用自定义函数实现它不工作我没有在我的代码中得到错误。我试着打电话给基本以后我会说出我的条件。
这是型号代码
input_txt.innerHTML
这是控制器代码
public function rules()
{
return [
['mobile_number', 'required'],
['mobile_number', 'myfunction'],
];
}
public function myfunction($attribute,$params)
{
$this->addError($attribute, 'You have already submitted');
}
它没有将错误分配给表单字段。
public function actionCreate()
{
$model = new Createuser();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
答案 0 :(得分:1)
我猜您的数据不包含名为mobile_number
的参数,或者它是一个空字符串,因此请尝试在代码中添加'skipOnEmpty' => false
。
请尝试一下,它对我有用。
public function rules()
{
return [
['mobile_number', 'required', 'skipOnEmpty' => false],
['mobile_number', 'myfunction', 'skipOnEmpty' => false],
];
}
答案 1 :(得分:0)
你确定你没有扩展模型类吗?如果是这样你需要把它放在:
$model->validate()
答案 2 :(得分:0)
你的模特:
public function rules()
{
return [
['mobile_number', 'required'],
['mobile_number', 'myfunction'],
];
}
public function myfunction($attribute,$params)
{
$this->addError($attribute, 'You have already submitted');
return false;
}
你的控制器:
public function actionCreate()
{
$model = new Createuser();
if ($model->load(Yii::$app->request->post()) && $model->save() && $model->validate()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
答案 3 :(得分:0)
试试这个 在你的控制器
protected function performAjaxValidation($model = NULL) {
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
Yii::$app->response->format = Response::FORMAT_JSON;
echo json_encode(ActiveForm::validate($model));
Yii::$app->end();
}
}
public function actionCreate()
{
$model = new Createuser();
$this->performAjaxValidation($model);
if ($model->load(Yii::$app->request->post()) && $model->save() && $model->validate()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
答案 4 :(得分:0)
代码很好。动态表单验证错误。