Zend Framework - плагин по имени не найден в реестре - PullRequest
8 голосов
/ 02 марта 2012

При вызове функции в моем файле views / helpers / , из моего скрипта внутри views / scripts / , я получаюэта ошибка:

Сообщение: плагин с именем 'SetBlnCompany' не найден в реестре;используемые пути: 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;
     }
}

скрипт, вызывающий ошибку

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

РЕДАКТИРОВАТЬ, чтобы добавить дополнительную информацию в мой пост.

В идеале я бы использовал этот класс "dropdown helper", чтобы иметь функцию для "get html", функцию для "get javascript" и множество функций-установщиков для установки параметров перед вызовом getHtml и getJavascript.

1 Ответ

11 голосов
/ 02 марта 2012

Ваш помощник должен иметь то же имя, что и ваш метод. Измените 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"
...