Answer the question
In order to leave comments, you need to log in
How to understand what is wrong with validation?
I'm trying to edit a post, but the post is not being edited and it keeps redirecting to this page with the form. I tried in various ways $model->errors
here an empty array, although it var_dump($model->validate())
writes boolen false. Only I can not determine where exactly the validation does not work and what kind of error?
If all code is shown with action
public function actionUpdate($id)
{
$model = $this->findModel($id);//Модель заказа
$client = new Client();//Модель клиентов
$client->scenario = Client::SCENARIO_CREATE;
$user = User::findOne(['id' => User::USER_DISAYNER]);
$tag = new ZakazTag();// Модель тегов
$telegram = new Telegram();
if ($model->load(Yii::$app->request->post()) && $client->load(Yii::$app->request->post())) {
$model->id_client = ArrayHelper::getValue(Yii::$app->request->post('Client'), 'id');//берет только данные клиента через select 2. Не помню зачем так сделал скорее всего надо поменять этот момент. Возмодер что что клиента это отдельная модель и может пользователь в этом же окне создать
/** Сохранение файла */
$model->file = UploadedFile::getInstance($model, 'file');
if (isset($model->file)) {
$model->upload('update', $id);
}
$model->changedUnread(); // логика прописано в модели прочитано или нет при редактирование
var_dump($model->validate());// выводит false
/** Если клиент и заказ прошли валидацию то идет сохраннение данных*/
if ($model->validate() && $client->validate()){
if (!$model->save()) {
print_r($model->getErrors());
} else {
/** Также сохраняет теги */
$arr = ArrayHelper::map($model->tags, 'id', 'id');
$post = Yii::$app->request->post('Zakaz')['tags_array'];
if ($post){
$tag->getZakazForm($post, $arr, $id);
}
/** Идет отправка уведомление через телеграм */
if($model->status == Zakaz::STATUS_DISAIN && $user->telegram_chat_id){
$telegram->message(User::USER_DISAYNER, 'Назначен заказ '.$model->prefics.' '.$model->description);
}
Yii::$app->session->addFlash('update', 'Успешно отредактирован заказ');
}
/** Смотря какая роль и именно туда идет редирект */
if (Yii::$app->user->can('shop')) {
return $this->redirect(['shop']);
} elseif (Yii::$app->user->can('admin')) {
return $this->redirect(['admin']);
}
}
}
return $this->render('update', [
'model' => $model,
'client' => $client,
]);
Answer the question
In order to leave comments, you need to log in
Instead
put
var_dump($model->validate());
var_dump($model->getErrors());
var_dump($client->validate());
var_dump($client->getErrors());
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question