如何在yii模型中设置属性

时间:2013-11-13 07:46:57

标签: yii model

在我的yii应用程序中。我编写如下代码:

OTP::model()->attributes['name'] = value;

但它不起作用。任何人都可以解释为什么它不起作用?

7 个答案:

答案 0 :(得分:3)

为了能够以这种方式设置属性,应在验证规则中将该属性标记为“安全”(请参阅​​:Yii Model rules validation

这样的事情可以解决问题:

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

答案 1 :(得分:2)

为您需要的属性$value设置值$name

$obj = OTP::model();
$obj->name = $value;

答案 2 :(得分:1)

这也有效

 $model->setAttribute("name","value");

答案 3 :(得分:0)

定义或扩展类时,可以像在任何其他PHP系统中一样在Yii中创建类变量和方法:

class Comment extends CActiveRecord {

    public $helperVariable;

    public function rules() { ... }
    ...
}

然后以明显的方式使用它们:

$var   = $model->helperVariable;

$rules = $model->rules();

这部分人人都明白。

答案 4 :(得分:0)

如果您使用gii创建了模型,则可以设置表格域的属性,如下所示。

public function attributeLabels()
    {
        return array(
            'customer_first_name' => 'First Name',
            ...
            ...
        );
    }

在控制器操作中放入此代码

$model = new Customer; // Use your model insterad of Customer

如果您想将它用作标签,那么只需要输入此代码即可。

<?php echo $form->labelEx($model, 'customer_first_name', array('class' => 'control-label')); ?>

答案 5 :(得分:0)

在yii模型中设置属性

$obj = OTP::model();
$obj->name = $value;

现在,如果我们将此模型传递给查看,那么只会显示这些值 name = $ value

$this->render('view',array('model'=>$obj));

我们如何设置多重值? 就像这样显示的值是:

  

name = value1或name = value2 ...

 $obj->name= 'value1' 
  //  or
 $obj->name= 'value2' 

答案 6 :(得分:-1)

$model = new OPT();
$model->attr = value