发新话题
打印

笔记:CakePHP中的控制器组件

笔记:CakePHP中的控制器组件

作者:老王

查看文件(/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');

    // ...
}

TOP

发新话题