2012-03-02 50 views
7

當調用我的意見/助理/內的意見/腳本/功能文件,從我的劇本,我得到這個錯誤:Zend框架 - 插件的名字在註冊表中未找到

Message: Plugin by name 'SetBlnCompany' was not found in the registry; used paths: My_View_Helper_: /www/zendserver/htdocs/development/application/views/helpers/ Zend_View_Helper_: Zend/View/Helper/:/www/zendserver/htdocs/development/application/views/helpers/

bootstrap.php中

protected function _initConfig() 
{  
    Zend_Registry::set('config', new Zend_Config($this->getOptions())); 
    date_default_timezone_set('America/Chicago'); 
} 

protected function _initAutoload() {  
    $autoloader = new Zend_Application_Module_Autoloader(array(    
     'namespace' => 'My',    
     'basePath' => dirname(__FILE__),  
    )); 
    return $autoloader; 
} 

的application.ini

resources.view.helperPath.My_View_Helper = APPLICATION_PATH "/views/helpers" 

應用程序/視圖/助理/ DropdownHelper.php

class Zend_View_Helper_Dropdownhelper extends Zend_View_Helper_Abstract 
{ 
    public $blnCompany = false; 

    public function getBlnCompany() { 
     return $this->blnCompany; 
    } 

    public function setBlnCompany($blnCompany) { 
     $this->blnCompany = $blnCompany; 
    } 
} 

腳本造成錯誤

<?php 
    $this->setBlnCompany(true); 
    //...etc... 
?> 

EDI T將更多的背景信息添加到我的文章。

理想情況下,我會使用這個「下拉幫助器」類,爲get get get和getJavascript之前的get get和get get方法設置選項的get html函數。

+0

只是FYI,你所做的任何不屬於ZF的類都不應該以'Zend_'開頭。這會讓有人認爲你的視圖助手是真正構建到ZF中的,併爲自動加載器添加了額外的查找。 '注意:重要的:必須與Zend Framework庫一起部署的代碼,但不是標準庫或額外庫的一部分(例如,應用程序代碼或不由Zend分發的庫)不得以「Zend_」或「ZendX _」開頭。參見[Zend Framework - 命名約定](http://framework.zend.com/manual/en/coding-standard.naming-conventions.html) – drew010 2012-03-02 18:57:52

回答

8

你的助手必須與你的方法名稱相同。將Zend_View_Helper_Dropdownhelper更改爲Zend_View_Helper_GetBlnCompany,它將起作用。不要忘了更改文件名太:GetBlnCompany.php

爲了使用代理方法,你只需要return $this;

// /application/views/helpers/helpers/GetBlnCompany.php 
class Zend_View_Helper_GetBlnCompany extends Zend_View_Helper_Abstract 
{  
    public function getBlnCompany() 
    { 
     return $this; 
    } 

    public function fooBar($blnCompany) 
    { 
     return ucfirst($blnCompany); 
    } 
} 

然後,你需要打電話給你的視圖助手爲如下:

$this->getBlnCompany()->fooBar('google'); 
//return "Google" 
+0

這樣一個助手只能有一個公共可用的函數嗎? – adam 2012-03-02 17:14:58

+0

不,您也可以使用代理功能,讓我編輯我的答案。 – Liyali 2012-03-02 17:15:52

+0

謝謝。理想情況下,我會使用這個「下拉幫助器」類,爲「get html」函數提供「get javascript」函數,還有許多setter函數在調用getHtml和getJavascript之前設置選項。 – adam 2012-03-02 17:18:50