刚开始使用 Yii(两周前)。
TL;博士
通过 Gii 生成的视图创建不起作用,但更新可以,即使它们共享未编辑的表单和控制器。
问题:
我使用Yii2 高级应用模板。
然后我通过模型生成器生成模型,并通过 CRUD 生成器生成控制器/视图。
我唯一更改的是从表单中删除两个日期时间字段“created_at”和“created_by”,并添加了一个 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()'),
],
];
}
我遇到的奇怪情况是,更新有效,但创建无效。它没有显示错误,它只是停留在页面上还是重新呈现它?
这是控制器中未修改的代码:
(我是否正确地认为 if 中的“$model->save”应该将其保存到数据库中?)
创造:
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,
]);
}
}
更新:
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,
]);
}
}
如果需要更多信息,请发表评论。谢谢。
更新 - 解决方案
在两个有用的答案之后,我尝试转储错误并显示
array(1) { ["created_at"]=> array(1) { [0]=> string(32) "Created At darf nicht leer sein." } }
正如建议的那样,我将“created_at”留在了规则的“必需”部分。清理后创建作品。我认为它没有显示错误,因为我删除了表单中的字段,因为用户不应该直接输入数据。