我的控制器中有这个代码:
public function actionEdit()
{
$model = new Section();
$id = ($_GET['id']);
if ($model->load(Yii::$app->request->post()))
{
$record = Menu::findOne(['id' => $id]);
$record->name = $model->name;
$record->save();
return $this->redirect(['menu/index']);
}
if ($model = Menu::findOne(['id' => $id]))
{
return $this->render('edit', [
'model' => $model
]);
}
}
这部分代码从未奏效:
if ($model->load(Yii::$app->request->post()))
{
$record = Menu::findOne(['id' => $id]);
$record->name = $model->name;
$record->save();
return $this->redirect(['menu/index']);
}
如果需要,那是我的视图文件:
<?php
/**
* Created by PhpStorm.
* User: Алексей
* Date: 14.01.2016
* Time: 19:00
*/
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<div class="menu-form">
<? echo $message?>
<? $form = ActiveForm::begin(); ?>
<div class="hidden">
<?
echo $form->field($model, 'id');
?>
</div>
<?= $form->field($model, 'name') ?>
<?= Html::submitButton('Изменить название', ['class' => 'btn btn-success']) ?>
<?php ActiveForm::end(); ?>
</div>
答案 0 :(得分:1)
您的代码的顺序看起来有些混乱,可能导致问题的原因。顺便说一句,您始终可以使用Gii的CRUD生成器并比较您的操作结构。
关于您的代码:此操作需要$id
参数,因为您无法编辑没有ID的内容。所以你应该用你的函数调用它:public function actionEdit($id)
。
我注意到你的行动中有2个模型被调用。不确定为什么要使用此Section
(它永远不会被保存),但我想您每次有人编辑Section
时都要创建新的Menu
,填充{ {1}}使用该信息并删除Menu
(同样,到目前为止,此Section
模型没有任何意义)。为此,您需要在load method中添加第二个参数。这是一个例子:
Section
如果不是这样,你能否更好地解释一下你想要完成什么?