我创建了一个更新个人资料页面。
我在控制器中有这个来填充表单并处理更新:
$user = User::model()->findByPk(Yii::app()->user->id);
// Collect user input
if (isset($_POST['User'])) {
$user->attributes = $_POST['User'];
if ($user->save()) {
echo "update successfully";
}
else {
echo "update failed";
}
}
// View
$this->render('user_view', array('user'=>$user,));
然而,这不起作用。虽然$ user-> save为true,但数据库中的记录未更新。我还检查$ _POST ['User']是否返回更新的数据,但是$ user->属性没有保存它们。
为什么会这样?
答案 0 :(得分:4)
您需要为“大规模分配”设置哪些模型属性是“安全的”。阅读有关此here的更多信息。
质量属性赋值$user->attributes
仅分配给具有验证规则的变量。只需给name
属性一个规则,即使它只是"safe" validator。
public function rules()
{
return array(
array('name', 'safe')
);
}
我很确定这是你遇到的问题,这件事发生在我身上!