2010-02-25 72 views
19

我從ZF(1.9.7)開始,我想從我的所有項目之間共享的庫中使用View Helpers。但我找不到如何將它添加到助手路徑。當我將他們放入應用程序的幫助程序路徑中時,我的herpers工作正常。如何添加視圖幫助程序目錄(zend框架)

這裏是錯誤,我找到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) 

此致
塞德里克

回答

38

它可以很容易地實現爲視圖內置的Zend_Application資源。如果您使用INI CONFIGS,加上這樣一行:

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

關鍵的終點是類名的前綴,而價值在那裏他們所在的路徑。

+0

非常感謝您節省了我5小時 – 2014-06-09 12:53:53

11
+1

雖然所有這些選項都是正確的,並會工作,我覺得'大衛建議application.ini'的解決方案是「最佳實踐」 。另外,在你的「_initView()」中你可以使用'$ this-> bootstrap('view'); $ view = $ this-> getResource('view');'使用application.ini視圖而不是隨機創建的視圖... – gnarf 2010-02-25 22:22:41

+0

@gnarf除了'addHelperPath()'外,引導示例被複制1 :1來自ZF參考指南。它不應該被視爲其他任何事物,而只是一個例子。我很清楚有不同的方法來做到這一點(例如使用Ini)。隨意做不同的事情。 – Gordon 2010-02-25 22:41:54

1

編輯:退房view helper in zend framework有關使用搶阿倫的Loggedinas視圖助手這個問題更詳細的服用。

您不僅可以按照David Caunt的規定進行操作,還可以在引導程序中像這樣操作。注意總是有做Zend框架的任何

退房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

5

有一個使用時出現問題

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

我可以不訪問視圖h elper在模塊中甚至是本地幫助者。(在註冊表中找不到名爲'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/" 
       } 
      } 
+0

您的解決方案就像一個魅力!我爲整個應用程序和每個模塊的助手使用助手!這就是我一直在尋找的! ;) – 2015-08-25 02:32:13