Yii清除属性的设定值

时间:2014-03-26 09:20:01

标签: php yii

在我的Web应用程序中,我需要以这样的方式清除一个特定属性,或者在单击以更新该记录时将其设置为Null。我应该如何继续我无能为力。

2 个答案:

答案 0 :(得分:1)

假设您有一个处理表单提交的控制器操作 - 这是通常的情况 - 您将在控制器中有这样的功能:

public function actionUpdate($id)
{
    // Load model
    $Model = Model::model()->findByPk($id);

    // or maybe do it this way
    $Model = $this->loadModel($id);

    // Check for form POST
    if(isset($_POST['Model']))
    {
         // Mass assignment of Model attributes to matching values in post array
         $Model->attributes = $_POST['Model'];

         if($Model->save())
         {
              // Do something, redirect etc
         }
    }

    $this->render('yourView');
}

所以在那里我们将$Model属性大量分配给表单中POST数组中的匹配值。但在完成之后,您可以覆盖单个属性。例如:

    // Check for form POST
    if(isset($_POST['Model']))
    {
         // Mass assignment of Model attributes to matching values in post array
         $Model->attributes = $_POST['Model'];

         $Model->attribute_a = null;
         $Model->attribute_b = '';
         $Model->name = 'Anything you like';
         $Model->date = 'Anything you like';
         // ...etc

         if($Model->save())
         {
              // Do something, redirect etc
         }
    }

答案 1 :(得分:1)

在模型中,创建一个函数beforeSave()

class Customer extends CActiveRecord
{
....
   public function beforeSave() {
      $this->last_order = null;
   }
....
}