2013-08-30 49 views
1

我有一點奇怪的情況。 我認爲,從這個角度來看,我執行了我的視圖助手「轉換文本」。此視圖助手(FR_View_Helper_ConvertingText.php)位於文件夾FR/View/Helper中查看助手是在一個控制器訪問,但不能從另一個訪問

沒問題,幫手工作。

我創建了404頁面。這不是簡單的html頁面。這個頁面與主頁面相似 - 我們從數據庫輸出一些項目。我在新視圖中複製了一部分視圖,並且我遇到了轉換文本視圖助手未加載的問題。

Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'ConvertingText' in /var/www/framework/zend/library/Zend/Controller/Plugin/Broker.php on line 336 

Zend_Loader_PluginLoader_Exception: Plugin by name 'ConvertingText' was not found in the registry; used paths: 
Zend_View_Helper_: Zend/View/Helper/:../application/views/helpers/:/var/www/current/application/modules/default/views/helpers/ in /var/www/framework/zend/library/Zend/Loader/PluginLoader.php on line 422 

在bootstrap.php中我們從法負載類裝載幫手

$view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

添加文件夾線我調試和輸出路徑Zend_Loader_PluginLoader 而主網頁上我有不同的路徑(用於加載插件)從404頁面上的路徑。

在主網頁我有這些路徑

/var/www/current/modules/movies/views/helpers/ConvertingText.php 
FR/View/Helper/ConvertingText.php 

在404頁我的這些路徑

/var/www/current/application/modules/movies/views/helpers/ConvertingText.php 
/var/www/current/application/modules/default/views/helpers/ConvertingText.php 
../application/views/helpers/ConvertingText.php 
Zend/View/Helper/ConvertingText.php 

而一個奇怪的問題,如果我添加行

$view->convertingText('', ''); 

行後

$view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

Bootstrap.php - 查看幫助器轉換文本在404頁面上工作。

爲什麼這樣的行爲?

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath("DR/View/Helper", "DR_View_Helper"); 
    $view->addHelperPath("FR/View/Helper", "FR_View_Helper"); 

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 

回答

0

我發現問題,爲什麼視圖助手是不可接受的。

輔助者的路徑被忽略。我在一個插件中找到了這個代碼。

$this->view = Zend_Registry::get('view'); 
$this->view->setBasePath('../application/views/'); 

執行方法setBasePath覆蓋到我的幫助者的路徑。

1

不同的路徑很可能取決於你在哪個模塊,您應該使用絕對路徑的視圖助手路徑,那麼你不會有這樣的問題:

$view->addHelperPath(APPLICATION_PATH."/../FR/View/Helper", "FR_View_Helper"); 

(根據需要進行更新。)

ZF重複使用幫助程序類,它已經加載,所以$view->convertingText('', '');修復了它,因爲在幫助程序在模塊更改之前加載。

編輯:試試這個爲你的初始化視圖的方法:

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath(APPLICATION_PATH."/../DR/View/Helper", "DR_View_Helper"); 
    $view->addHelperPath(APPLICATION_PATH."/../FR/View/Helper", "FR_View_Helper"); 

    $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $stack = Zend_Controller_Action_HelperBroker::getStack(); 
    $stack->push($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 
+0

只有我這個代碼添加到我的ErrorController工作。如果在Bootstrap.php中將相對路徑替換爲絕對值,則會得到相同的結果 - main();};};}}頁面工作,404頁面 - 錯誤 感謝此 – yAnTar

+0

哪個代碼,哪裏在你的錯誤控制器? –

+0

對不起,在我以前的評論中,我只發佈了文本的一部分 – yAnTar

0

試試這個我覺得尾部斜槓(/)和下劃線(_)可產生問題

protected function _initView() 
{ 
    $view = new Zend_View(); 
    $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper"); 
    $view->addHelperPath($path . "/DR/View/Helper/", "DR_View_Helper_");//Add $path 
    $view->addHelperPath($path . "/FR/View/Helper/", "FR_View_Helper_");//Add $path 

    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); 
    $viewRenderer->setViewScriptPathSpec(":controller/:action.:suffix"); 
    $viewRenderer->setView($view); 
    Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); 

    Zend_View_Helper_PaginationControl::setDefaultViewPartial(array('pagination.phtml','default')); 

    Zend_Registry::set('view', $view); 

    return $view; 
} 
+0

謝謝,但情況相同。 – yAnTar

+0

你用$ path替換了$ path嗎? –

+0

@yAnTar是DR/View/Helper是否在庫目錄中? –

相關問題