H
H
hollanditkzn2017-07-27 11:29:47
Yii
hollanditkzn, 2017-07-27 11:29:47

How can you determine why instead of one save, 2 post requests come at once?

It turns out when you edit and save the order, then 2 requests are sent at the same time on the same request. I have never come across and without a clue why it comes crm/frontend/web/updete/1423
The controller is implemented like this

public function actionUpdate($id)
    {
        $model = $this->findModel($id);//Модель для редактирование заказа 
        $client = new Client();//Модель базы с клиентами
        $client->scenario = Client::SCENARIO_CREATE;//Валидация происходит по определенному сценарию, главное чтобы было всегда помечен id

        if ($model->load(Yii::$app->request->post()) && $client->load(Yii::$app->request->post())) {
//Если пришел запрос от заказа и клиента, то в моделе заказе ставится id клиента
            $model->id_client = ArrayHelper::getValue(Yii::$app->request->post('Client'), 'id');
//если были загружены файлы то сохраняет файл в хранилище и пишет путь в бд
            $model->file = UploadedFile::getInstance($model, 'file');
            if (isset($model->file)) {
                $model->file->saveAs('attachment/' . $model->id_zakaz . '.' . $model->file->extension);
                $model->img = $model->id_zakaz . '.' . $model->file->extension;
            }
//Если пришел статус заказа определенный, то проставляется внутрений статус как "Новый" и непрочитанный
            if ($model->status == Zakaz::STATUS_DISAIN or $model->status == Zakaz::STATUS_MASTER or Zakaz::STATUS_AUTSORS) {
                if ($model->status == Zakaz::STATUS_DISAIN) {
                    $model->statusDisain = Zakaz::STATUS_DISAINER_NEW;
                    $model->id_unread = 0;
                } elseif ($model->status == Zakaz::STATUS_MASTER) {
                    $model->statusMaster = Zakaz::STATUS_MASTER_NEW;
                    $model->id_unread = 0;
                } else {
                    $model->id_unread = 0;
                }
            }
//Если прошла валидация по двум моделям, то сохраняет и выводит сообщение, если нет то пишет что произошла ошибка и пишет из-за чего конкретно произошла ошибка
            if ($model->validate() && $client->validate()){
                if (!$model->save()) {
                    Yii::$app->session->addFlash('errors', 'Произошла ошибка');
                    print_r($model->getErrors());
                } else {
                    $model->save();
                    Yii::$app->session->addFlash('update', 'Успешно отредактирован заказ');
                }
Если роль shop, то перенаправляет на определенный экран, если роль admin, то преводит на свое окно 
                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,
        ]);
    }

And in the debugging came the same requests like this
_GET $
Name Value
id '1423'
$ _POST
Name Value
_csrf-frontend 'FjBSA0WnJbc-MYXzYAJ451ewoKQ6-q9IBrBIS7Sl11suzMMJOq3mg6sUdDaiC7w_OJcJQnKzHaAkmKLXVEtS1A =='
Zakaz [
'description' => 'test circles'
' number '=>' 50 '
' information '=>' AAI '
'file' => ''
'name' => 'Ivan'
'phone' => '82147483647'
'email' => ''
'oplata' => '50'
'fact_oplata' => '25'
'srok' => '2017-07-26 12:10:00'
'status' => ''
'prioritet' => ''
]
Client [
'id' => '51'
]
srok-zakaz-srok-disp '26 Jul 2017 12:10'
$_FILES
Name Value
Zakaz [
'name' => [
'file' => ''
]
'type' => [
'file' => ''
]
'tmp_name' => [
'file' => ''
]
'error' = > [
'file' => 4
]
'size' => [
'file' => 0
]
]

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
Maxim Timofeev, 2017-07-27
@webinar

And what about your action? It accepts a request, not sends. You are not looking there. See the form, the view that sends requests to this action.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question