カスタム ビュー ヘルパーの登録方法に関する多くの投稿を読みました。これは私の問題ではありません。ライブラリから動作するカスタム ビュー ヘルパーがあります。ただし、それらは「デフォルト」モジュール (つまり、モジュールの外) からしかアクセスできないようです。モジュール内からヘルパーを呼び出そうとすると、次のエラーが発生します。
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(...
しかし、モジュール内のビュー スクリプト内の同じ行でエラーが発生します。
私のヘルパークラスは、というファイルにあります
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 ファイルに含まれる唯一のものは次のとおりです。
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
{
}
この作業ビュー ヘルパーをモジュールからも見えるようにする方法について何か提案はありますか?