Just started with Yii (two weeks ago).
TL;DR
Creating through Gii generated views not working, but update does, even they share the form and controller not edited.
Problem:
I use the Yii2 advanced app template.
Then I generated a model through the model generator and controller/views through the CRUD generator.
The only thing I changed is removing the two datetime fields "created_at" and "created_by" from the form and added a TimestampBehavior:
public function behaviors()
{
return [
[
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_at', 'updated_at'],
ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],
],
// if you're using datetime instead of UNIX timestamp:
'value' => new Expression('NOW()'),
],
];
}
The strange case I have is, that the update is working, but the create not. It shows no error, it just stay on the page or renders it newly?
This is the untouched code from the controller:
(Am I getting it right that the "$model->save" in the if should save it to the databse?)
CREATE:
public function actionCreate()
{
$model = new Seminar();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
UPDATE:
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
If further informations are needed please comment. Thanks.
UPDATE - Solution
After the two helpful answers I tried dump the error and it shows
array(1) { ["created_at"]=> array(1) { [0]=> string(32) "Created At darf nicht leer sein." } }
As suggested I left the "created_at" in the "required" section of the rules. After cleaning it out the create works. I think it did not show me the error because I deleted the field in the form, since the user should not enter data dirctly.