这行Yii代码试图做什么?

时间:2013-12-31 02:00:46

标签: php yii

只是一个简单的问题。我在扩展中看到以下代码,我不确定它在做什么。

public function actionCreate() {
    $model = new User('register');  <----(this is the line I am confused about)
    //other stuff...
}

“('注册')”在那里做什么?这是一个争论进入 “用户”类?我查看了用户模型,useridentidy,webuser和cwebuser类,但找不到任何内容。我知道如果没有适当的上下文,这可能很难解释,但总的来说,在Yii中声明一个新对象后,这些额外的东西是什么?我只是输入以下内容创建了用作活动记录的对象:

$model = new User;

(再次使用“User”类作为例子)

我很感激任何帮助澄清这个问题。

3 个答案:

答案 0 :(得分:4)

这是一个scenario。 Yii中的模型可能有多个“场景”影响验证的执行方式以及可以批量分配哪些属性。在这种情况下,User类的对象使用register方案进行实例化,该方案定义了一组特定于注册的验证规则。

答案 1 :(得分:1)

您也可以在一个模型中调用不同的场景:

在您的模型规则函数中:

 public function rules(){
    return array(
        array('username,email', 'required','on'=>'register,update'),
        array('firstname,lastname', 'required','on'=>'other scenario here'),
     );
  }

您希望在Controller操作中调用自定义方案!

  $model = new User('update');

或者

 $model = new User('register');

答案 2 :(得分:0)

这是一个传递给构造函数的参数。在User类中查找名为__construct的函数,它可能会接受一个参数,您可以看到它正在做什么。

这不是Yii独有的,任何类都可以在它的构造函数中接受参数。