Кроме того, я сейчас пытался сделать с мутексом, но мне непонятна одна вещь. Вот есть два действия: форма создания статьи и форма редактирования статьи. После создания должен быть редирект на форму редактирования. Я поставил валидацию сразу после освобождения мутекса, но если она не проходит я не знаю куда редиректить, т.к. у меня нет id созданной статьи.
Если непонятно - вот пример:
Код: Выделить всё
/**
* @property int $id
* @property string $name
*/
class Article extends ActiveRecord
{
public function rules() {
return [
['name', 'required'],
['name', 'unique'],
];
}
}
public function actionCreate() {
$model = new Article();
$model->load(Yii::$app->request->post();
if (Yii::$app->request->isAjax) { // тут еще аяксовая валидация у меня
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
$mutex = new Mutex();
while (!$mutex->acquire($this->action->id))
sleep(1);
if (!$model->validate())
return $this->redirect(['article/update', 'id' => ???]); // как тут правильнее сделать??? я же даже не знаю - может валидация не из-за имени не прошла (там есть и другие поля в реале)
$model->save();
$mutex->release($this->action->id);
return $this->redirect(['article/update', 'id' => $model->id]);
}