为什么这部分代码永远不会在Yii中运行?

时间:2016-01-14 20:14:17

标签: php yii2

我的控制器中有这个代码:

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>

1 个答案:

答案 0 :(得分:1)

您的代码的顺序看起来有些混乱,可能导致问题的原因。顺便说一句,您始终可以使用Gii的CRUD生成器并比较您的操作结构。

关于您的代码:此操作需要$id参数,因为您无法编辑没有ID的内容。所以你应该用你的函数调用它:public function actionEdit($id)

我注意到你的行动中有2个模型被调用。不确定为什么要使用此Section(它永远不会被保存),但我想您每次有人编辑Section时都要创建新的Menu,填充{ {1}}使用该信息并删除Menu(同样,到目前为止,此Section模型没有任何意义)。为此,您需要在load method中添加第二个参数。这是一个例子:

Section

如果不是这样,你能否更好地解释一下你想要完成什么?