我尝试保存多语言内容 我的关于模型
...
public function rules() {
return [
[['status', 'date_update', 'date_create'], 'integer'],
[['date_update', 'date_create'], 'required'],
];
}
...
public function getContent($lang_id = null) {
$lang_id = ($lang_id === null) ? Lang::getCurrent()->id : $lang_id;
return $this->hasOne(AboutLang::className(), ['post_id' => 'id'])->where('lang_id = :lang_id', [':lang_id' => $lang_id]);
}
我的AboutLang模型
public function rules()
{
return [
[['post_id', 'lang_id', 'title', 'content'], 'required'],
[['post_id', 'lang_id'], 'integer'],
[['title', 'content'], 'string'],
];
}
我的关于控制器
public function actionCreate()
{
$model = new About();
$aboutLang = new AboutLang();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,'aboutLang'=>$aboutLang]);
}
}
和我的观点(创建表单)
...
<?= $form->field($model, 'status')->textInput() ?>
<?= $form->field($aboutLang, 'title')->textInput() ?>
<?= $form->field($aboutLang, 'content')->textInput() ?>
enter code here
当我在创建表单中放入$ aboutLang时,我得到一个错误“在非对象上调用成员函数formName()”
答案 0 :(得分:1)
看起来您正在使用的视图是由Gii生成的。在这种情况下,Gii为表单(_form.php)生成部分视图,为创建和更新操作生成两个视图(create.php和update.php)。这两个视图执行局部视图的渲染。
您可能遇到的问题是,当您调用$aboutLang
时,您没有将变量renderPartial()
从create.php传递给_form.php,这必须在create.php中完成:
$this->renderPartial("_form", array(
"model" => $model,
"aboutLang" => $aboutLang, //Add this line
));
希望它有所帮助。
答案 1 :(得分:0)
检查你的$ aboutLang类型。 看起来它是空的。
if ($aboutLang) {
echo $form->field($aboutLang, 'title')->textInput();
echo $form->field($aboutLang, 'content')->textInput();
}