2012-03-02 3 views
7

При вызове функции в моих просмотров/хелперах/ файла, из моего сценария внутри просмотров/скриптов/, я получаю эту ошибку:Zend Framework - плагин по имени не был найден в реестре

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... 
?> 

ЭОД T, чтобы добавить дополнительную информацию о моем сообщении.

В идеале я бы использовал этот класс «dropdown helper», чтобы иметь функцию «get html» для функции «get javascript», и многие функции setter для установки параметров перед вызовом getHtml и getJavascript.

+0

Только FYI, любые классы, которые вы делаете, которые не являются частью ZF, не должны начинаться с 'Zend_'. Это заставило бы кого-то подумать, что ваш помощник по виду действительно встроен в ZF и добавляет дополнительный поиск для автозагрузчика. 'Примечание: Важно: код, который должен быть развернут вместе с библиотеками Zend Framework, но не входит в стандартную или дополнительную библиотеку (например, код приложения или библиотеки, которые не распространяются Zend), никогда не должен начинаться с« Zend_ »или« ZendX _ ».' См. [Zend Framework - Соглашения об именах] (http://framework.zend.com/manual/en/coding-standard.naming-conventions.html) – drew010

ответ

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

+0

Нет, вы также можете использовать функцию прокси, позвольте мне отредактировать мой ответ. – Liyali

+0

спасибо. В идеале я бы использовал этот класс «dropdown helper», чтобы иметь функцию «get html» для функции «get javascript», а многие функции setter - устанавливать параметры перед вызовом getHtml и getJavascript. – adam

Смежные вопросы