2012-03-02 7 views
7

Cuando se llama a una función en mis views/helpers/ archivo, desde mi script dentro views/scripts/, me sale este error:Zend Framework - Plugin por su nombre no se encontró en el registro

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

guión causando errores

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

EDI T para agregar más información de fondo a mi publicación.

Lo ideal sería utilizar esta clase de "ayudante desplegable", tener una función para "obtener html" una función para "obtener javascript" y muchas funciones setter para establecer las opciones antes de llamar a getHtml y getJavascript.

+0

Solo FYI, las clases que hagas que no sean parte de ZF no deberían comenzar por 'Zend_'. Haría pensar a alguien que su asistente de visualización está realmente integrado en ZF y agrega una búsqueda adicional para el autocargador. 'Nota: Importante: el código que debe implementarse junto con las bibliotecas de Zend Framework pero que no forma parte de las bibliotecas estándar o adicionales (por ejemplo, código de aplicación o bibliotecas que Zend no distribuye) nunca debe comenzar con" Zend_ "o" ZendX _ ". Consulte [Zend Framework - Convenciones de nomenclatura] (http://framework.zend.com/manual/en/coding-standard.naming-conventions.html) – drew010

Respuesta

8

Su ayudante debe tener el mismo nombre que su método. Cambie Zend_View_Helper_Dropdownhelper en Zend_View_Helper_GetBlnCompany y funcionará. No se olvide de cambiar el nombre del archivo también: GetBlnCompany.php

Para utilizar un método proxy, sólo hay que 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); 
    } 
} 

Entonces, es necesario llamar a su ayudante de vista como sigue:

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

para que un ayudante solo pueda tener una función públicamente utilizable. – adam

+0

No, también puedes usar una función proxy, déjame editar mi respuesta. – Liyali

+0

gracias. Lo ideal sería utilizar esta clase de "ayudante desplegable", tener una función para "obtener html" una función para "obtener javascript" y muchas funciones de configuración para establecer las opciones antes de llamar a getHtml y getJavascript. – adam

Cuestiones relacionadas