H
H
hollanditkzn2018-04-11 13:50:20
Yii
hollanditkzn, 2018-04-11 13:50:20

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

The code is big, I want to refactor and shorten the code, but first of all I need to understand why the data is not being edited

Answer the question

In order to leave comments, you need to log in

1 answer(s)
V
Vitaly Khomenko, 2018-04-11
@hollanditkzn

Instead
put

var_dump($model->validate());
var_dump($model->getErrors());
var_dump($client->validate());
var_dump($client->getErrors());

and see all the errors.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question