0

我想在特殊页面更改密码。

当我单击“更改密码”时,我必须转到密码视图。

这是我需要去的地方更新视图的代码

<?php
/* @var $this UserController */
/* @var $model User */

$this->menu=array(
    array('label'=>'User List', 'url'=>array('index')),
    array('label'=>'Create User', 'url'=>array('create')),
    array('label'=>'View User', 'url'=>array('view', 'id'=>$model->id)),
    array('label'=>'Change password', 'url'=>array('password', 'id'=>$model->id)),
);
?>

<h1>Change user <?php echo $model->id; ?></h1>

<?php echo $this->renderPartial('_form', array('model'=>$model)); ?>

这是我的 password.php 查看文件

<?php
$this->menu=array(
    array('label'=>'List user', 'url'=>array('index')),
    array('label'=>'Create user', 'url'=>array('create')),
    array('label'=>'View user', 'url'=>array('view', 'id'=>$model->id)),
    array('label'=>'Change user', 'url'=>array('update', 'id'=>$model->id)),
);
?>

<?php
CHtml::beginForm();
CHtml::textField('password');
CHtml::submitButton('Change');
CHtml::endForm();
?>

UserController 有动作 actionPassword()

public function actionPassword($id) {
        $model=$this->loadModel($id);
        $model->password=$_POST['password'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
        $this->render('password');
}

在示例中,我使用此代码工作正常。但我有错误 http://pastebin.com/XbCwfhRT

所有文件和文件夹都具有 root 权限。我做错了什么?一个月前相同的代码工作正常,我不明白哪里出了问题。

4

1 回答 1

0

您忘记检查是否$_POST已设置,因此加载操作时(提交之前) $_POST['password']不存在。

if(isset($_POST['password'])) {
    $model->password=$_POST['password'];
    if($model->save())
        $this->redirect(array('view','id'=>$model->id));
}
于 2013-08-05T14:40:14.070 回答