duanli4146
duanli4146
2012-03-02 17:08

Zend Framework - 在注册表中找不到名称的插件

已采纳

When calling a function in my views/helpers/ file, from my script inside views/scripts/ , i get this error:

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" 

application/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;
     }
}

script causing error

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

EDIT to add more background information to my post.

Ideally i would use this "dropdown helper" class, to have a function for "get html" a function for "get javascript" , and many setter functions to set options before the getHtml and getJavascript are called.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • dougu4704 dougu4704 9年前

    Your helper must have the same name than your method. Change Zend_View_Helper_Dropdownhelper into Zend_View_Helper_GetBlnCompany and it will work. Don't forget to change your filename too: GetBlnCompany.php

    In order to use a proxy method, you simply need to 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);
        }
    }
    

    Then, you need to call your view helper as follow:

    $this->getBlnCompany()->fooBar('google');
    //return "Google"
    
    点赞 评论 复制链接分享