2012-03-02 53 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