2012-03-31 63 views
2

我想簡單地使用位於/library/my/view/helpers/friends.phpzend框架找不到幫手視圖文件。獲取「按名稱插件未找到」的錯誤

自定義視圖助手我有這樣的application.ini

resources.view.helperPath.My_View_Helper = "/my/view/helpers"

這是輔助類:

class My_View_Helper_Friends extends Zend_View_Helper_Abstract { 
    public function friends() { 
     $str = "hello world"; 
     return $str; 
    } 
} 

這是在視圖文件:

<?php echo $this->friends(); ?> 

我在這條線得到一個錯誤說,它不能找到它已經在路徑插件

錯誤:

Plugin by name 'Friends' was not found in the registry; used paths: My_View_Helper_: /My/View/Helpers/ Zend_View_Helper_: Zend/View/Helper/;C:/http/xampplite/htdocs/zf-tutorial/application/views\helpers/

看起來像使用正確的路徑和其該文件在那裏。我不明白爲什麼找不到它?

+0

我一直不得不使用'$ this-> helper()'使它工作。另外我的視圖助手都是'Zend_View_Helper_MyHelper'(也許嘗試重命名),儘管我沒有把它們放在庫中,我把它們放在'/ views/helpers'中以保持簡單。你沒有提到你是否將'autoloaderNamespaces [] = MY_'添加到你的application.ini中。不知道這是否是一個因素。 – RockyFord 2012-03-31 07:03:47

+0

@RockyFord這可能是因爲你命名了你的類'Zend_View_Helper_XXX'(如果我正確地讀了它),你總是必須使用'$ this-> helper()'。只有正式屬於ZF的類應該以'Zend_'或'ZendX_'爲前綴(參見[ZF命名約定](http://framework.zend.com/manual/en/coding-standard.naming-conventions.html)) 。它可能與自動加載器在Zend目錄中查找助手類有關。 – drew010 2012-03-31 07:15:00

+0

@ drew010我應該說'$ this-> MyHelper()'用'Zend_View_Helper_XXX'作爲前綴是默認值。所以我不必註冊一個新的幫手路徑。它們存儲在我的任何'/ views/helpers'目錄中。有一天,當我清理應用程序時,我會把它們放在一個地方。此外,這個問題自我發佈以來已經清理完畢,所以我的帖子讓我感覺不太敏感:) – RockyFord 2012-03-31 09:28:25

回答

2

我相信問題是正在使用不正確的路徑。

...used paths: My_View_Helper_: /My/View/Helpers/

注意路徑的路徑是/My/View/Helpers。它使用絕對路徑。另一個問題是該文件夾應命名爲Helper而不是helpers

然後在你application.ini更改配置行這樣的:

resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/../library/my/view/helper" 

,並確保你的類被稱爲My_View_Helper_Friends和文件被命名爲Friends.php。案件事宜。這個目錄實際上應該被稱爲My/View/Helper

編輯:假設library在你include_path,你也可以使用該行:

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

注意它不具有領先/。這將在您的include_path中搜索文件夾My/View/Helper中的所有位置。

+0

+1,正確的答案:) – 2012-03-31 07:14:22

+0

我完全按照您對第一個選項的建議。添加了這個路徑常量,大寫了我的dir名稱,並確保助手類名稱是正確的。現在我得到這個錯誤:在註冊表中找不到名稱爲「朋友」的插件;使用路徑:My_View_Helper_:C:\ http \ xampplite \ htdocs \ zf-tutorial \ application ../ library/my/view/helper/Zend_View_Helper_:Zend/View/Helper /; C:/ http/xampplite/htdocs/zf- tutorial/application/views \ helpers/ – Andy 2012-03-31 20:26:41

+0

我正在使用Windows 7.請注意,應用程序常量正在反斜出,而其餘路徑是正斜槓。我認爲這是問題。看起來像application.ini中使用該常量的所有路徑是混合正向和反向斜線。 – Andy 2012-03-31 20:29:01