2012-03-02 15 views
7

Przy wywołaniu funkcji w moich poglądów/pomocników/ plik z mojego skryptu wewnątrz views/scripts/, otrzymuję ten błąd:Zend Framework - plugin o nazwie nie został odnaleziony w rejestrze

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/pomocników/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; 
    } 
} 

skrypt powoduje błąd

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

EDI T, aby dodać więcej informacji podstawowych do mojego posta.

Najlepiej byłoby użyć tej "dropdown helper", aby funkcja "get html" stała się funkcją "get javascript", a wiele funkcji ustawiających ustawiało opcje przed wywołaniem getHtml i getJavascript.

+0

Po prostu dla wszystkich klas, które nie są częścią ZF, nie należy rozpoczynać od 'Zend_'. To sprawi, że ktoś pomyśli, że twój pomocniczy widok jest naprawdę wbudowany w ZF i dodaje dodatkowe wyszukiwanie do autoloadera. 'Uwaga: Ważne: Kod, który musi zostać wdrożony wraz z bibliotekami Zend Framework, ale nie jest częścią biblioteki standardowej lub dodatków (np. Kod aplikacji lub biblioteki, które nie są dystrybuowane przez Zend) nie może zaczynać się od" Zend_ "lub" ZendX _ ". Zobacz [Zend Framework - Konwencje nazewnictwa] (http://framework.zend.com/manual/en/coding-standard.naming-conventions.html) – drew010

Odpowiedz

8

Twój pomocnik musi mieć to samo imię, co twoja metoda. Zmień Zend_View_Helper_Dropdownhelper na Zend_View_Helper_GetBlnCompany i będzie działać. Nie zapomnij, aby zmienić nazwę pliku zbyt: GetBlnCompany.php

Aby wykorzystać metodę proxy, wystarczy 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); 
    } 
} 

Następnie trzeba zadzwonić Państwa zdanie jako pomocnika śledź:

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

, więc pomocnik może mieć tylko jedną publicznie użyteczną funkcję? – adam

+0

Nie, możesz również użyć funkcji proxy, pozwól mi edytować odpowiedź. – Liyali

+0

dzięki. Najlepiej byłoby użyć tej "dropdown helper", aby funkcja "get html" stała się funkcją "get javascript", a wiele funkcji ustawiających ustawi opcje przed wywołaniem getHtml i getJavascript. – adam