作者:老王
查看
文件(/cake/libs/controller/component.php)的
源代码,我们可以看到类似下面的东西:
复制内容到剪贴板
代码:
...
$this->controller->components = array_merge($this->controller->components, array('Session'));
...也就是说,Session组件是一个缺省
组件,我们不用在程序中显式声明即可使用。
对于一个子
控制器而言,可以按照如下的方式来包含组件:
复制内容到剪贴板
代码:
class XxxSubController extends Controller
{
var $components = array('Acl', 'Security');
// ...
}如果很多子控制器都共享同样的组件,那么我们可以把组件的引用转移到AppController里,方式是拷贝app_controller.php文件到app目录,然后:
复制内容到剪贴板
代码:
class AppController extends Controller
{
var $components = array('Acl', 'Security');
// ...
}但这样又会产生一个问题,如果子类中想多引用一个组件(Else),必须重新引用AppController引用的组件(Acl, Security),不管怎么说,这多少让人有点恼火。
复制内容到剪贴板
代码:
class XxxSubController extends Controller
{
var $components = array('Acl', 'Security', 'Else');
// ...
}