【问题标题】:Yii update profile pageYii 更新个人资料页面
【发布时间】:2011-02-14 13:30:55
【问题描述】:

我创建了一个更新个人资料页面。

我在控制器中有这个来填充表单并处理更新:

$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['U​​ser'] 正在返回更新的数据,但 $user->attributes 没有保存它们。

为什么会这样?

【问题讨论】:

  • 我可以使用 $user->name= $_POST['U​​ser']['name']; 手动分配但是如果有要更新的数据列表会很麻烦
  • 查看 thaddeusmt 的答案,如果您也可以发布您的“用户”模型,那就太好了:D

标签: php yii


【解决方案1】:

您需要为“大量分配”设置哪些模型属性是“安全的”。阅读有关此here 的更多信息。

mass 属性赋值$user->attributes 只会赋值给有验证规则的变量。只需给name 属性一个规则,即使它只是"safe" validator

public function rules()
{
  return array(
    array('name', 'safe')
  );
}

我很确定这是你遇到的问题,它发生在我身上!

【讨论】:

  • 很可能这确实是问题所在,我自己已经遇到过很多次了:)
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 2015-10-08
  • 1970-01-01
  • 2020-11-28
  • 2016-11-26
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多