我不想更新密码字段。如何使用它。我使用 md5 编码密码。所以我不想更新 yii 框架中的密码字段。感谢任何帮助吗??
最佳答案
我认为更好的方法是在这种情况下不使用该场景。规则中的下一个代码只是对场景说:下一个字段是必需的。但不是:跳过其他。
array('name, username, email', 'required', 'on' => 'update'),
例如,如果我们将密码的长度限制为最多 32 个字符,但在数据库中以 sha1 格式存储(长度为 40),那么我们就会遇到问题,因为验证器会阻止数据库查询。这是因为当您进行更新时,“validatе”方法会检查所有类属性(关于数据库表映射),而不仅仅是邮寄的新属性。
可以使用“saveAttributes”方法,但后来我注意到另一个问题。如果“email”列在数据库中是唯一的,并且编辑的电子邮件与现有的电子邮件重复,那么规则中定义的 Yii 消息系统将无法通知并抛出有关数据库查询的错误代码。
我认为最简单的方法是:在这种情况下不要设置场景。只需将您想要的属性作为参数发送即可。这将保留 GII 创建的所有 CRUD 功能。
在您的代码中,它看起来像这样: (在模型中)
public function rules() {
return array(
array('name, username, email, password', 'required'),
);
}
(在 Controller 中)
if($id==Yii::app()->user->id){
$model=$this->loadModel($id);
if(isset($_POST['JbJsJobResume'])) {
$model->attributes=$_POST['JbJsJobResume'];
if($model->save(true, array('name', 'username', 'email')))
$this->redirect(array('view','id'=>$model->id));
}
$this->render('update',array( 'model'=>$model, ));
}
我注意到您没有使用 RBAC。它非常方便和灵活 - 试试吧。
http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#role-based-access-control
关于php - 如何只更新 Yii 框架中的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527391/