我有一个名为Stage1Application
的模型和一个对应的控制器Stage1ApplicationsController
。
当我使用时,在控制器中
$this->Stage1Application->create();
我得到"调用非对象创建"错误。这是因为我的型号/控制器的名称中有数字吗?
我还有
public $uses = array('Package','PersonalDetail','MarriageDetail','ChildrenDetail');
在我的控制器开始时,这是否阻止了它包含自己的模型?如果这是问题所在,那么我如何使$uses
数组附加,以便在默认情况下包括当前控制器的模型?
除了模型名称必须是有效的类名之外,我不知道模型名称有任何限制。根据PHP手册:一个有效的类名以字母或下划线开头,后面跟着任意数量的字母、数字或下划线。http://php.net/manual/en/language.oop5.basic.php所以,数字应该是允许的,只要你不以数字开头。
是的,如果您声明$uses,它会覆盖默认的$uses属性。将Stage1Application
添加到$uses属性声明中:
public $uses = array('Package','PersonalDetail','MarriageDetail','ChildrenDetail', 'Stage1Application');
或者,您可以在控制器的beforeFilter
函数中更改$uses
属性,并使模型仍然加载:
$this->uses = array_merge($this->uses, array('Package','PersonalDetail','MarriageDetail','ChildrenDetail'));
您的uses数组中没有Stage1模型,这就是为什么会出现错误的原因。