只是一个简单的问题。我在扩展中看到以下代码,我不确定它在做什么。
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”类作为例子)
我很感激任何帮助澄清这个问题。
答案 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独有的,任何类都可以在它的构造函数中接受参数。