首页 文章

Yii - 更新模型并使用模型在视图中回显数据

提问于
浏览
1

我有以下代码来更新Yii模型:

public function actionSettings($id) {
    if (!isset($_POST['save_hostname']) && isset($_POST['Camera']) && isset($_POST['Camera']['hostname'])) {
        $_POST['Camera']['hostname'] = '';
    }
    $model = $this->loadModel($id);
    $model->setScenario('frontend');
    $this->performAjaxValidation($model);
    if (isset($_POST['Camera'])) {
        $model->attributes = $_POST['Camera'];
        unset($model->api_password);
        if ($model->save()) {
            Yii::app()->user->setFlash('success', "Camera settings has been saved!");
        } else {
            Yii::app()->user->setFlash('error', "Unable to save camera settings!");
        }
    }
    $this->render('settings', array(
        'model' => $model,
    ));
}

这工作正常,除了我的模型我有这样的代码:

<h1>Settings For: <?php echo CHtml::encode($model->name); ?></h1>

问题是,即使用户输入验证失败,h1标签也会输入错误的输入 . 如果输入未通过验证,则h1属性应保持不变 .

我可以在返回视图之前将$ model变量'重置'到数据库中的内容,但这意味着我没有得到任何错误反馈/验证失败的消息 .

我唯一的选择是拥有2个$ model(可能是$ model和$ data),一个用于处理表单而另一个用于向页面发送数据?或者有人有一个更优雅的解决方案?

1 回答

  • 0

    performAjaxValidation将所有保存属性分配给模型,因此这种行为是正常的 . 如果保存失败,我会重新加载模型 .

    $model->refresh();
    

相关问题