Когда создаю новую запись, она не сохраняется если ещё загружать файл. В итоге нету id записи на который редиректить, если исключить работу с файлами то запись создается и отправляет на вьюху просмотра.
Вот так выглядит модель:
class Journal extends \yii\db\ActiveRecord
{
const SCENARIO_CREATE = 'create';
const SCENARIO_UPDATE = 'update';
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios[self::SCENARIO_CREATE] = ['title', 'preview'];
$scenarios[self::SCENARIO_UPDATE] = ['title'];
return $scenarios;
}
/**
* @inheritdoc
*/
public static function tableName()
{
return 'journal';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['title', 'preview'], 'required', 'on' => self::SCENARIO_CREATE],
[['title'], 'required', 'on' => self::SCENARIO_UPDATE],
[['content'], 'string'],
[['created_at', 'updated_at'], 'safe'],
[['title', 'preview'], 'string', 'max' => 150],
[['description'], 'string', 'max' => 250],
[['url'], 'string', 'max' => 70],
[['preview'], 'file', 'extensions' => 'png, jpg, jpeg, gif', 'skipOnEmpty' => true]
];
}
....
Метод контроллера создания новой записи:
public function actionCreate()
{
$this->view->title = 'Создание статьи';
$this->view->params['breadcrumbs'][] = ['label' => 'Журнал', 'url' => ['panel/journal']];
$this->view->params['breadcrumbs'][] = $this->view->title;
$model = new Journal(['scenario' => Journal::SCENARIO_CREATE]);
if ($model->load(Yii::$app->request->post())) {
$model->content = Html::decode($model->content);
$model->url = Translit::t($model->title);
$model->preview = UploadedFile::getInstance($model, 'preview');
$path = Yii::$app->params['uploads_path'].'/journal/preview/';
$model->preview->saveAs($path.$model->preview->name);
$model->save();
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}