我是yii的新手。在SiteController中的默认actionLogin()方法中,我正在搜索where
$model->attribtes
已定义?
$model->attributes=$_POST['LoginForm'];
我在LoginForm,CFormModel,CModel类中搜索但我找不到。这是一种二传手法吗?
答案 0 :(得分:4)
http://www.yiiframework.com/doc/guide/1.1/en/form.model#securing-attribute-assignments
创建模型实例后,我们经常需要使用最终用户提交的数据填充其属性。这可以使用以下大量任务方便地完成:
$model=new LoginForm;
if(isset($_POST['LoginForm']))
$model->attributes=$_POST['LoginForm'];
最后一个语句称为大规模分配,它分配每个条目 $ _POST ['LoginForm']到相应的模型属性。它等同于以下任务:
foreach($_POST['LoginForm'] as $name=>$value)
{
if($name is a safe attribute)
$model->$name=$value;
}
Yii通过实例提供对许多其他内容的访问 变量,例如数据库字段,关系,事件处理程序和 喜欢。这些“属性”是Yii中非常强大的一部分 框架,虽然可以在不理解的情况下使用它们, 一个人不能真正使用全部力量而不进入封面a 位。
attributes
是CActiveRecord的属性,是的,它有getter和setter方法
http://www.yiiframework.com/doc/api/1.1/CActiveRecord#attributes-detail
然后您希望看到的位置
https://github.com/yiisoft/yii/blob/1.1.14/framework/db/ar/CActiveRecord.php#L754
答案 1 :(得分:1)
'attributes'属性实际上是模型中的getter / setter方法。将数组传递给它将尝试对这些属性进行“大量”设置。 $ _POST ['LoginForm']中的所有元素都需要在模型中具有相应的属性。在Yii附带的LoginForm模型中,那些设置为属性(即public $username;
),attributes
属性将为$username
分配数组中的关联值({{1} })。
答案 2 :(得分:0)
我打印了class_parents($ model)的输出。它说它继承自CComponent。所以我认为$ attributes属性是在CComponent类的__set()方法中声明的。