gpt4 book ai didi

php - Zend View 助手在模块中不可用

转载 作者:行者123 更新时间:2023-12-04 04:46:34 24 4
gpt4 key购买 nike

我已经阅读了很多关于如何注册自定义 View 助手的帖子。这不是我的问题。我有自定义 View 助手在我的库中工作;但是,它们似乎只能从“默认”模块(即模块外部)访问。尝试从模块中调用帮助程序时,出现以下错误:

Message: Plugin by name 'IsCurrent' was not found in the registry; used paths: Zend_View_Helper_: Zend/View/Helper/:/Users/firemanrob/Development/Projects/mysite.com/www/application/modules/admin/views/helpers/

如上所述,当我从模块外部进行此调用时,它工作正常......
if ($this->isCurrent(...

但是同一行,在 View 脚本中,在模块中会产生错误。

我的助手类在一个名为
library/Sc/View/Helper/IsCurrent.php

类的定义和函数声明如下:
class Sc_View_Helper_IsCurrent extends Zend_View_Helper_Abstract {

public function isCurrent($startTime, $endTime) {

我的 Bootstrap.php 文件(除其他外)包含以下内容:
function _initViewHelpers() {
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewRenderer->setViewSuffix('php');
unset($viewRenderer);
/* @var $view Zend_View */
$view = $layout->getView();
$options = Zend_Registry::get('options');

if (Zend_Registry::isRegistered('db')) {
$this->_db = Zend_Registry::get('db');
} else {
$db = $this->getPluginResource('db');
$this->_db = Zend_Db::factory($db->getAdapter(), $db->getParams());
Zend_Registry::set('db', $this->_db);
}

$view->doctype('HTML5');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
$view->headTitle($options->template->websiteBaseTitle);
$view->headTitle()->setSeparator(' | ');
$view->addHelperPath("Sc/View/Helper", "Sc_View_Helper");

}

我的 application.ini 文件包含的唯一与模块或 View 助手有关的内容是:
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

; setup modules

resources.modules[] =
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"

;content settings
content.path = "../application/content"

;layout settings

resources.layout.layoutpath = APPLICATION_PATH "/layouts"
resources.layout.viewSuffix = php
resources.layout.layout = "default"

autoloadernamespaces[] = Amg
autoloadernamespaces[] = Sc
autoloadernamespaces[] = Phpmailer

我尝试注释掉 resources.modules[] 行,因为我在另一篇文章中读到了类似的内容。那只是打破了一切。

我试图从中调用它的特定模块称为“admin”,在该模块的文件夹中是另一个 Bootstrap.php 文件,其中仅包含:
<?php
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}

关于如何使这个工作 View 助手也对我的模块可见的任何建议?

最佳答案

这有点远,但是您可以尝试注释掉您当前拥有的三 View 渲染器行并将以下内容添加到您的 _initViewHelpers() 末尾代替功能:

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
$viewRenderer->setViewSuffix('php');
$stack = Zend_Controller_Action_HelperBroker::getStack();
$stack->push($viewRenderer);

这应该确保 $view您正在配置的对象是 View 渲染器使用的对象。您的辅助路径不在您遇到的错误中,这表明它来自不同的 View 对象。

我没有解释为什么它在默认模块中起作用,但在管理模块中不起作用。如果它在布局内工作,而不是从可能更有意义的 View 脚本中工作。

关于php - Zend View 助手在模块中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18083228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com