19

ZF (1.9.7) から始めて、すべてのプロジェクトで共有されているライブラリから View Helpers を使用したいと考えています。しかし、そのディレクトリをヘルパーパスに追加する方法が見つかりません。私のヘルパーは、アプリケーションのヘルパー パスに配置すると正常に動作します。

ZFヘルパーへのパスとアプリケーションヘルパーへのパスを見つけるエラーは次のとおりです。

object(ArrayObject)#71 (3) {
  ["exception"]=>
  object(Zend_Loader_PluginLoader_Exception)#70 (6) {
    ["message:protected"]=>
    string(151) "Plugin by name 'Voo' was not found in the registry; used paths:
Zend_View_Helper_: Zend/View/Helper/;C:/ZendStd/www/applis/VOO4_PROJECTX/views\helpers/"
    ["string:private"]=>
    string(0) ""
    ["code:protected"]=>
    int(0)
    ["file:protected"]=>
    string(89) "C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Loader\PluginLoader.php"
    ["line:protected"]=>
    int(401)

よろしく
セドリック

4

5 に答える 5

38

これは、ビューに組み込まれているZend_Applicationリソースを使用して非常に簡単に実行できます。ini configsを使用している場合は、次のような行を追加します。

resources.view.helperPath.My_View_Helper = "My/View/Helper"

キーの終わりはクラス名プレフィックスであり、値はそれらが存在するパスです。

于 2010-02-25T22:15:57.180 に答える
11

ヘルパー パスはZend_View_Abstract::addHelperPath()によって追加されます。このメソッドは、既存の View インスタンスで直接呼び出すことができます。

ヘルパー パスは、ブートストラップ中にさまざまな方法で構成することもできます。Zend_ApplicationBootstrap クラスとリソースの使用方法については、ZF マニュアルの章を参照してください。

于 2010-02-25T16:20:42.067 に答える
5

使い方に問題あり

resources.view.helperPath.App_View_Helper = APPLICATION_PATH "/../library/App/views/helpers"

モジュール内のローカル ヘルパーであっても、レイアウト内のビュー ヘルパーにアクセスできません。('LoggedInAs' という名前のプラグインがレジストリに見つかりませんでした) が、ビュー テンプレート ファイルで引き続き機能します。

このコード「echo Zend_Debug::dump($this)」をレイアウト ファイルの末尾に配置すると、出力の一部が表示されます。

        ["_prefixToPaths:protected"] => array(3) {
          ["Zend_View_Helper_"] => array(2) {
            [0] => string(17) "Zend/View/Helper/"
            [1] => string(16) "./views\helpers/"
          }
          ["ZendX_JQuery_View_Helper_"] => array(1) {
            [0] => string(25) "ZendX/JQuery/View/Helper/"
          }
          ["Zend_View_Helper_Navigation_"] => array(1) {
            [0] => string(28) "Zend/View/Helper/Navigation/"
          }
        }

しかし、ブートストラップ ファイルでこれらのコードを使用する場合、問題はありません。

    //Initialize and/or retrieve a ViewRenderer object on demand via the helper broker
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->initView();
    //add the global helper directory path
    $viewRenderer->view->addHelperPath(APPLICATION_PATH.'/../library/App/views/helpers', 'App_View_Helper');

出力は次のようになりました。

            ["_prefixToPaths:protected"] => array(4) {
              ["Zend_View_Helper_"] => array(3) {
                [0] => string(17) "Zend/View/Helper/"
                [1] => string(16) "./views\helpers/"
                [2] => string(86) "D:/zf/application/modules/default/views\helpers/"
              }
              ["App_View_Helper_"] => array(1) {
                [0] => string(85) "D:\zf\application/../library/App/views/helpers/"
              }
              ["ZendX_JQuery_View_Helper_"] => array(1) {
                [0] => string(25) "ZendX/JQuery/View/Helper/"
              }
              ["Zend_View_Helper_Navigation_"] => array(1) {
                [0] => string(28) "Zend/View/Helper/Navigation/"
              }
            }
于 2012-10-16T07:40:21.110 に答える
1

編集: rob allen の Loggedinas ビュー ヘルパーを使用してこの問題をより詳細に調べるには、zend フレームワークのビュー ヘルパーを確認してください。

David Caunt の指定どおりに実行できるだけでなく、ブートストラップでこのように実行することもできます。Zend Framework で何かを行うには、常に複数の方法があることに注意してください。

http://devzone.zend.com/article/3412をご覧ください

ビュー オブジェクトにアクセスできる場合は、次の操作を行います。

<?php    
$view->addHelperPath('My/View/Helper/', 'My_View_Helper'); 
?>

フロントコントローラープラグインを使用している場合は、ビューオブジェクトを取得する必要がある場合があります

また、ここから始まるこの本当に素晴らしい一連の投稿もチェックしてください。

http://zend-framework-community.634137.n4.nabble.com/Getting-view-from-Bootstrap-ZF1-8-tp659447p659460.html

于 2011-07-04T02:25:25.743 に答える
0

アプリケーション全体でアクセスできる共通ディレクトリから zend ビュー ヘルパーを登録するための短い簡単なチュートリアルを作成しました。ご覧ください。

http://www.mixedwaves.com/2010/03/accessing-and-using-zend-view-helpers-from-a-common-directory/

于 2010-06-03T04:38:04.053 に答える