@hollanditkzn

Как можно определить почему вместо одного сохранение приходит сразу 2 post запроса?

Выходит когда редактируешь, и сохраняешь заказ, то выходит 2 запроса одновременно отправяется по одному и тому же запросу. Не разу не сталкивался и без понятие почему он приходит crm/frontend/web/updete/1423
В контроллере вот так реализована
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,
        ]);
    }

И в дебаге пришли одинаковые запросы вот такой
$_GET
Name Value
id '1423'
$_POST
Name Value
_csrf-frontend 'FjBSA0WnJbc-MYXzYAJ451ewoKQ6-q9IBrBIS7Sl11suzMMJOq3mg6sUdDaiC7w_OJcJQnKzHaAkmKLXVEtS1A=='
Zakaz [
'description' => 'тестовые кружки'
'number' => '50'
'information' => 'ааи'
'file' => ''
'name' => 'Иван'
'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 Июл 2017 12:10'
$_FILES
Name Value
Zakaz [
'name' => [
'file' => ''
]
'type' => [
'file' => ''
]
'tmp_name' => [
'file' => ''
]
'error' => [
'file' => 4
]
'size' => [
'file' => 0
]
]
  • Вопрос задан
  • 98 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
А при чем тут Ваш экшен? Он принимает запрос, а не отправляет. Вы не там ищите. Смотрите форму, вьюху которая отправляет запросы в этот экшен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы