YII2 Пользовательская проверка не работает с правилом пользовательской модели функции

Я пытаюсь реализовать с помощью пользовательской функции в модели не работает, я не понимаю, что не так в моем коде. Я пытаюсь позвонить с основным позже, я поставлю свое состояние.

Вот код модели

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,
]);
}
}

это не присвоение ошибки в поле формы.

Thanks in advance.

-1

Решение

Вы уверены, что не расширяете модельный класс? если это так, вы должны поставить это:

$model->validate()
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,
]);
}
}
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,
]);
}
}
0

Код в порядке. это была ошибка с проверкой динамической формы.

0
По вопросам рекламы [email protected]