php - 如何只更新 Yii 框架中的某些字段?

标签 php yii

enter image description here

我不想更新密码字段。如何使用它。我使用 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/

相关文章:

php - Yii 时间戳是如何工作的?

php - 如何使用 Yii 使用多个配置文件

php - Codeigniter MySQL 连接复杂

javascript - 保存带有内部元素的 div 并向所有人展示

PHP MySQL 邮政编码到纬度/经度然后按距离查询排序不起作用

mysql - 获取yii中的所有表名

php - Yii Mysql 选择自定义字段

php - 查询 this=$value AND (this =$value1 OR $value2)

php - XAMPP错误: MySQL shutdown unexpectedly

php - 无需重新加载页面的通知(如 facebook 或 google plus 通知)