控制器插件的命名和路径

naming and path of controller plugins

我很困惑,我已经阅读了我找到的有关该主题的所有内容,但它不起作用。

我想构建一个插件来使用 preDispatch 操作。

我想这样命名:

class Mosaik_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract

我的路径和文件名:C:\wamp\www\mosaik\application\controllers\plugins\Acl.php

我试图在我的 application.ini 中注册 class:

resources.frontController.plugins.acl = "Mosaik_Controller_Plugin_Acl"

我遇到一些错误:

致命错误:Class 'Mosaik_Controller_Plugin_Acl' 在第 117 行的 C:\wamp\www\mosaik\library\Zend\Application\Resource\Frontcontroller.php 中找不到 'Mosaik_Controller_Plugin_Acl'

我的确切问题是:对于这个例子,我的 application.ini 应该如何注册。我的插件名称 class 是正确的还是我必须更改它? (比如?)我知道这是一个基本的理解问题,但没有任何帮助。

你的困惑主要是因为自动加载和naming/namespaces。您的插件名称与现有命名空间不匹配(至少对于标准 ZF 设置不匹配)并且自动加载将无法将其与文件匹配。因此找不到您的Class。

在标准 ZF1 中,至少 Version 1.9 -> see 30.3.2 the Module Resource Autoloader 我们有插件的资源类型映射,您可以创建一个 application/plugins 文件夹并添加您的插件。这就是你的样子

C:\wamp\www\mosaik\application\plugins\Acl.php

// the new class name
class Application_Plugin_Acl extends Zend_Controller_Plugin_Abstract

// the new application.ini
resources.frontController.plugins.acl = "Application_Plugin_Acl"