【问题标题】:Problem with plugin in zend frameworkZend框架中的插件问题
【发布时间】:2011-04-12 13:55:53
【问题描述】:

我创建了一个位于 application/controllers/plugin/view.php 的插件,下面是它的内容

类 Application_Controller_Plugin_View 扩展 Zend_Controller_Plugin_Abstract { 公共函数 dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $frontController = Zend_Controller_Front::getInstance(); $view = $frontController->getParam('bootstrap')->getResource('view'); 回声“比赛”; 出口; $view->doctype('XHTML1_STRICT'); $baseUrl = $request->getBaseUrl(); 如果(定义('RUNNING_FROM_ROOT')){ $baseUrl .= '/public'; $frontController->setBaseUrl($baseUrl); } /* $view->headLink()->appendStylesheet($baseUrl . '/css/main.css'); $view->headLink()->appendStylesheet($baseUrl . '/css/screen.css', 'screen'); $view->headLink()->appendStylesheet($baseUrl . '/css/print.css', 'print');*/ } }

然后我在引导程序中注册了这个插件,如下所示:

受保护的函数 _initLayoutHelper() { $front = Zend_Controller_Front::getInstance(); $front->registerPlugin(new Application_Controller_Plugin_View()); }

但它给了我一个像

这样的错误 (!)致命错误:在第 42 行的 C:\wamp\www\saet_new\application\Bootstrap.php 中找不到类“Application_Controller_Plugin_View”

请帮帮我。

【问题讨论】:

  • 您为此使用插件而不是自定义视图应用程序资源(甚至只是使用 application.ini 中设置的参数配置标准视图应用程序资源)的任何具体原因?

标签: zend-framework


【解决方案1】:

插件在这里吗:

库/应用程序/控制器/插件/view.php

?

我认为自定义代码属于库文件夹,并且该路径已在 index.php 中定义

我在引导程序中注册我的命名空间,如下所示:

$autoLoader = Zend_Loader_Autoloader::getInstance();
$autoLoader->registerNamespace('Custom_');

然后库代码可以放在文件夹library/custom中

【讨论】:

  • 是的,我的插件路径是 library/application/controllers/plugin/view.php
  • 尝试将应用程序更改为其他内容,例如custom 所以路径是 library/custom/controllers/plugin/view.php 并且类名是 Custom_Controllers_Plugin_View 还要确保在 .ini 文件中设置了 includePaths.library = APPLICATION_PATH "/../library"
  • 我也更改了目录但仍然出现相同的错误?先生有什么想法。
  • 很好奇,出于兴趣,您是否还有其他可用的插件,或者是第一个也是唯一一个?你能在你的库中自动加载其他类吗?例如,您也可以尝试在 .ini 文件中注册插件,而不是 bootstrap resources.frontController.plugins.view = "Application_Controller_Plugin_View",但这并不意味着它应该有所作为
  • 现在可以使用了。我刚刚在 application.ini 中添加了以下行 autoloadernamespaces.custom = "Custom_"。
【解决方案2】:

我认为这是因为您正在调用 Default_Application_Controller_Plugin_View 而您的插件是 Application_Controller_Plugin_View

您是否在使用模块?这可以解释为什么 Default_ 会在那里,尽管我相信除非设置了 prefixDefaultModule,否则不需要前缀。

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多