Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Donde declarar un plugin - ZF

Estas en el tema de Donde declarar un plugin - ZF en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos, estoy haciendo un plugin para una aplicacion y me surge la duda de donde declararlo. El plugin en cuestion esta en la carpeta ...
  #1 (permalink)  
Antiguo 15/12/2009, 07:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Donde declarar un plugin - ZF

Hola amigos, estoy haciendo un plugin para una aplicacion y me surge la duda de donde declararlo.

El plugin en cuestion esta en la carpeta plugins, dentro de la carpeta library:
Código:
library/plugins/Miplugin.php
Buscando donde declararlo me encuentro dos posibilidades:
en el application.ini
Código:
resources.frontController.plugins = "Miplugin"
o en el Bootstrap.php con un _initPlugins:
Código:
protected function _initPlugins(){
		$front = Zend_Controller_Front::getInstance();
                $front->registerPlugin(new MiPlugin());
	}
Cual de estas formas es la correcta?
Yo creo que la segunda, pero la primera es muy cómoda y no llena tanto el Bootstrap.php, saludos.
  #2 (permalink)  
Antiguo 15/12/2009, 08:21
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

La primera! :P no solo que es mas lindo sino que es exactamente lo mismo, Zend luego hace el registerPlugin() pero es invisible a nuestros ojos

Todo lo que pueda sacar del bootstrap y ponerlo en application.ini es lo mejor

A veces hay cosas que no se pueden, pero son las menos

Saludos :D
  #3 (permalink)  
Antiguo 15/12/2009, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Donde declarar un plugin - ZF

+1, solo asegurate que el autoloader pueda encontrar y crear tu clase, o si no va a marcar un error.

Saludos.
  #4 (permalink)  
Antiguo 15/12/2009, 18:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Que tal amigos, estoy viendo los plugins e hice esto a manera de practica, pero me sale el error:
Cita:
Fatal error: Call to a member function sumar() on a non-object in C:\wamp\www\Zendf\miproyecto\application\modules\m oduno\controllers\IndexController.php on line 26
el plugin lo tengo en: library/plugins/Unpluginmas.php

en el application.ini
Código PHP:
resources.frontController.plugins.unpluginmas "Plugins_Unpluginmas" 
Este es el plugin:
Código PHP:
class Plugins_Unpluginmas extends Zend_Controller_Plugin_Abstract{
    
    public function 
sumar($x=null){
        
$suma=$x;
        return 
$suma;
}

Y asi lo declaro en un action
Código PHP:
$front Zend_Controller_Front::getInstance();
        
$st $front->getPlugin('Plugins_Unpluginmas');
        
        
$this->view->verplugin=$st->sumar(83); 
Estuve probando, cambiando cosas, pero no queda.
Quizas uds. vean el error, saludos y gracias.
  #5 (permalink)  
Antiguo 15/12/2009, 18:12
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

No encuentra el plugin, fijate si $st es un objeto o es false

Si es false fijate que el autoloader este buscando en el directorio donde tenes los plugins

Saludos!
  #6 (permalink)  
Antiguo 15/12/2009, 18:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Gracias rodrigo_00.
Hago un var_dump a $st y me da false.

¿Como puedo saber si el autoloader está buscando en el directorio correcto?
  #7 (permalink)  
Antiguo 15/12/2009, 19:05
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

donde tenes los plugins??

si los tenes en /library, lo ideal seria que tengas un prefijo propio para tus clases (cualquiera, supongamos "Yo"), tenes /Library/Yo/Plugins/Unpluginmas, y si al autoloader le agregas que cargue el prefijo "Yo_", al momento de crear el plugin lo deberia cargar automaticamente (obviamente el plugin deberia llamarse Yo_Plugins_Unpluginmas)

read this http://framework.zend.com/manual/en/...utoloader.html :P

Saludos
  #8 (permalink)  
Antiguo 16/12/2009, 10:53
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Donde declarar un plugin - ZF

Hola.

Creo que te falta declarar el namespace en el application.ini :
Código PHP:
Ver original
  1. autoloadernamespaces.plugins = "Plugins_"
__________________
I see dead pixels
  #9 (permalink)  
Antiguo 16/12/2009, 15:42
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Hola Serge.
Es que he creado la aplicacion con Zend Tool y la carpeta "Plugins" ya esta incluida dentro de library.
Creo/creia que el sistema ya la reconoce sin hacer el mamespace, o no ??.

Le he agregado un nivel mas, pero sigue sin funcionar.
Código PHP:
library/mis/plugins/Unpluginmas.php 
en application.ini
Código PHP:
;namespace
autoloaderNamespaces
[] = "Mis_"

;Plugins
resources
.frontController.plugins.unpluginmas "Mis_Plugins_Unpluginmas" 
Asi queda el plugin en Unpluginmas.php
Código PHP:
class Mis_Plugins_Unpluginmas extends Zend_Controller_Plugin_Abstract{
... 
Y asi lo llamo
Código PHP:
$front Zend_Controller_Front::getInstance();
        
$st $front->getPlugin('Mis_Plugins_Unpluginmas');
        
        
$this->view->verplugin=$st->sumar(83); 
Si alguien ve el error que me avise, pque no he podido encontrar el error todavía.

PD: ahora quedé en la duda, tengo que crear tambien el namespace para "plugins". :(
  #10 (permalink)  
Antiguo 16/12/2009, 16:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Donde declarar un plugin - ZF

Lo que me queda duda, es que para que estas haciendo eso, parece que lo que quieres es un viewHelper, un controller plugin es para que se ejecute en el loop del dispatcher.

Saludos.
  #11 (permalink)  
Antiguo 16/12/2009, 16:58
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Hola GatorV, este en particular lo estoy haciendo para ver como funciona un plugin, para practicar.
Para ver donde y como se declara, etc. etc.
Estoy haciendo todo lo que dicen los manuales y no funciona.
  #12 (permalink)  
Antiguo 16/12/2009, 18:08
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

por las dudas pondria en mayusculas el directorio library/Mis/Plugins/Unpluginmas.php

y tienes library en tu include_path??
  #13 (permalink)  
Antiguo 16/12/2009, 19:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Es un problema del namespace o alguna ruta del application.ini que esta mal y no me doy cuenta.

Así funciona:
Código PHP:
include 'Mis/Plugins/Unpluginmas.php';

        
$claseplug=new Mis_Plugins_Unpluginmas();
        
$this->view->verelplugin=$claseplug->sumar(44); 
Seguiré revisando, pero la verdad ya revise todo y no me doy cuenta, seguramente como sucede en la mayoría de estos casos sea una pavada.
  #14 (permalink)  
Antiguo 16/12/2009, 19:57
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

claro asi funciona

pero fijate eso mismo sin el include

si NO funciona, tenes mal el autoloader, no queda otra

yo creo que el problema esta en include_path + autoloader

Saludos
  #15 (permalink)  
Antiguo 17/12/2009, 00:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Donde declarar un plugin - ZF

Repito nuevamente, lo que tu buscas es un ViewHelper, no un ControllerPlugin ya que no es la forma correcta que estos tengas métodos publicos como suma, mejor haz un viewHelper para eso.

Saludos.
  #16 (permalink)  
Antiguo 17/12/2009, 06:44
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Hola amigos.

@rodrigo_00, lo raro es que funciona toda la aplicacion perfecto, tengo tres modulos, varios controllers y actions, helpers... en fin, todo funciona bien si el include_path o el autoloader estaria mal, fallarian otras cosas, no?

@GatorV, este plugin no lo voy a utilizar en nada en particular, es solo de práctica, para ver como se carga y trabaja un plugin, por eso es algo bien sencillo, solo para aprender.

Saludos.

Hola, amigos yo otra vez, quizas tenga este problema.
Tengo en mi index.php
Código PHP:
set_include_path('.'
    
PATH_SEPARATOR 'C:\wamp/www/Zendf/libreriazend/library'
    
PATH_SEPARATOR .APPLICATION_PATH.'/../library'
    
PATH_SEPARATOR get_include_path()
); 
Y en mi application.ini
Código PHP:
includePaths.library =APPLICATION_PATH "../../libreriazend/library" 
Pero cuando comento la linea que indica la libreria de Zend en el index.php, no me funciona nada.
O sea la ruta del application.ini no la agarra.
Puede ser esto el problema?
Donde debería estar indicada la ruta a la libreria zend ¿en el index.php o en application.ini?

Saludos.

Última edición por GatorV; 17/12/2009 a las 10:11
  #17 (permalink)  
Antiguo 17/12/2009, 08:46
 
Fecha de Ingreso: noviembre-2007
Ubicación: Lanus, Buenos Aires
Mensajes: 178
Antigüedad: 16 años, 5 meses
Puntos: 14
Respuesta: Donde declarar un plugin - ZF

yo lo tengo en los dos lados tambien, eso no esta mal

al comentar la del index.php obviamente no funciona porque no va a encontrar nada, empezando por zend_application que es lo primero que usas


si te animas podrias debugear el autoloader para ver porque no encuentra Mis_Plugins_Unpluginmas :PPP
  #18 (permalink)  
Antiguo 17/12/2009, 09:56
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Perdon por mi ignorancia.
Como se debugea el autoloader?
  #19 (permalink)  
Antiguo 17/12/2009, 10:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Donde declarar un plugin - ZF

Si ya tienes el autoloader, configurado prueba hacer var_dump($controller->getPlugins());
  #20 (permalink)  
Antiguo 17/12/2009, 18:13
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Donde declarar un plugin - ZF

Bueno, solucionado y como vaticiné era una pavada.
Así tenia yo el application.ini (la declaracion del plugin debajo de [Database]).
Asi no funcionaba.
Código PHP:
...
[
Database]
resources.db.adapter "pdo_mysql"
resources.db.params.host "localhost"
resources.db.params.username "xxx"
resources.db.params.password "xxx"
resources.db.params.dbname "xxx"
resources.db.isDefaultTableAdapter true

resources
.frontController.plugins.Unpluginmas "Mis_Plugins_Unpluginmas"
autoloaderNamespaces[] = "Mis_"
... 
Asi funciona:
Código PHP:
...
resources.frontController.plugins.Unpluginmas "Mis_Plugins_Unpluginmas"
autoloaderNamespaces[] = "Mis_"

[Database]
resources.db.adapter "pdo_mysql"
resources.db.params.host "localhost"
resources.db.params.username "xxx"
resources.db.params.password "xxx"
resources.db.params.dbname "xxx"
resources.db.isDefaultTableAdapter true
... 
Por si a algún distraído le ocurre lo mismo...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:54.