Answer the question
In order to leave comments, you need to log in
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,
]);
}
_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
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 questionAsk a Question
731 491 924 answers to any question