Foros del Web » Programando para Internet » PHP » Zend »

No encuentra plugin

Estas en el tema de No encuentra plugin en el foro de Zend en Foros del Web. Que tal amigos, tengo este problema; He creado un plugin y lo he alojado en: \library\mis\plugins\DetectaUser.php en el application.ini tengo lo siguiente: ;plugins resources.frontController.plugins.DetectaUser = ...
  #1 (permalink)  
Antiguo 28/03/2011, 18:15
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
No encuentra plugin

Que tal amigos,
tengo este problema;
He creado un plugin y lo he alojado en:
\library\mis\plugins\DetectaUser.php

en el application.ini tengo lo siguiente:

;plugins
resources.frontController.plugins.DetectaUser = "mis_plugins_DetectaUser"
autoloaderNamespaces[] = "mis_"


El error es el siguiente:
Fatal error: Class 'mis_plugins_DetectaUser' not found in C:\wamp\www\Zendf\libreriazend\library\Zend\Applic ation\Resource\Frontcontroller.php on line 111

O sea no encuentra el plugin.

En el Bootstrap no lo tengo registrado, pero creo haber leído que registrandolo en el application.ini, no hace falta registrarlo en el Bootstrap; ¿estoy en lo cierto?.

Cual puede ser el error?
Saludos.
  #2 (permalink)  
Antiguo 28/03/2011, 18:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: No encuentra plugin

Los plugins deberían ir en un directorio llamado plugins en el directorio de application (o de acuerdo a los modulos si es que tienes) Es decir
Código PHP:
Ver original
  1. <?php
  2. // /application/plugins/DetectUser.php
  3. class Application_Plugin_DetectUser extends Zend_Controller_Plugin_Abstract
  4. {
  5. //...
  6. }
Luego lo añades al bootstrap
Código PHP:
Ver original
  1. protected function _initAutoload()
  2. {
  3.     $fc = Zend_Controller_Front::getInstance();
  4.     $fc->registerPlugin(new Application_Plugin_DetectUser(/*lo que quieras usar*/));
  5. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 28/03/2011, 19:03
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: No encuentra plugin

Que nombre tiene la clase ? es mis_plugins_DetectaUser ?, fuera de eso, el namespace y la carpeta correspondiente deberian ser Mis\Plugin, el fichero llamarse DetectaUser.php y la clase Mis_Plugin_DetectaUser

@abimaelrc, no siempre van ahi, tenes que tener en cuenta que podes tener plugins que pertenezcan a tu libreria(la que extiende Zend y utilizas en todos los proyectos).

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 28/03/2011, 19:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: No encuentra plugin

Gracias Iba a indicar que puede también estar en la librería, pero pensaba que como Zend tiene declarado los namespaces y mapean a unos lugares en específico, por eso lo indiqué de esa forma, pero tienes razón que van a haber varios en el library
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 28/03/2011, 19:36
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: No encuentra plugin

Hola muchas gracias, ese tema esta solucionado había cometido un error en la carpeta "Plugins", había puesto "Plugin" :(.

Pero ahora tengo otro... la idea es esta para que se entienda:
El plugin detecta si hay un usuario logueado, llama a la vista y llena una variable de la misma (la vista), dicha variable es recogida por un view helper, si la variable esta llena, quiere decir que el usuario está logueado, sino muestra un formulario.
El problema es que no muestra nada, en el lugar que debiera ir el nombre de usuario o el form, aparece en blanco.
Aqui les pongo el plugin y el view helper a ver si es la forma correcta o hay otra forma mejor.

El plugin:
Código PHP:
Ver original
  1. class Mis_Plugins_DetectaUser  extends Zend_Controller_Plugin_Abstract
  2.     {
  3.  
  4.     public function preDispatch(Zend_Controller_Request_Abstract $request)
  5.     {
  6.         $auto=Zend_Auth::getInstance();
  7.         if($auto->hasIdentity()){
  8.         $hayusuario = $auto->getIdentity()->usuario;
  9.         $hayrole = $auto->getIdentity()->role;
  10.  
  11.         $ViewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
  12.         $ViewRenderer->initView();
  13.         $ViewRenderer->view->usuoformu = $hayusuario;
  14.     }
  15.  else {
  16.        $ViewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
  17.        $ViewRenderer->initView();
  18.        $ViewRenderer->view->usuoformu ="";
  19.     }
  20. }
  21.     }


El view helper:
Código PHP:
Ver original
  1. class App_Helper_Usuform extends Zend_View_Helper_Abstract{
  2.  
  3.     public function usuform(){
  4.  
  5.                 $aiusu = $this->view->usuoformu;
  6.  
  7.  
  8.         if(!empty ($aiusu)){
  9.        
  10.         echo"<span id='formul'>Usuario:".$aiusu." || <a href='/index/logout'> Logout</a> </span>";
  11.         }
  12.         else{
  13.         $form="\n<table border=0>\n";
  14.         $form.="<form id='formul' method='post' action='/index/login'>\n";
  15.         $form.="<tr><td>Nombre:&nbsp;<input type=text name=\"nombre\" size=9></td>\n";
  16.         $form.="<td>Clave:&nbsp;<input type=password name=\"clave\" size=9></td>\n";
  17.         $form.="<td><input type=submit value=enviar></td></tr></form>\n";
  18.         $form.="</table>\n";
  19.         return $form;
  20.         }
  21.     }
  22.  
  23.  
  24. }

Como ven la variable "usuoformu" se genera en el plugin y la recoge el view helper si esta vacia debería mostrar el formulario, sino el nombre de usaurio.

Saludos.
  #6 (permalink)  
Antiguo 29/03/2011, 03:02
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 11 meses
Puntos: 845
Respuesta: No encuentra plugin

Te dejo este material ramonw http://weierophinney.net/matthew/arc...e-Widgets.html, ahi vas a ver la forma correcta de implementarlo.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 29/03/2011, 10:22
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: No encuentra plugin

Hola gracias master, estuve viendo el link, pero al final lo dejé como lo hice yo.
Tenía un pequeño error, en la vista al imprimir el helper puse "this->Usuform" en vez de "this->Usuform()", jeje, los errores la mayoría de las veces terminan siendo errores tontos.

Ahora me anda bien, lo único que demora un poco en cargar, ¿que podrá ser?.
¿Puede ser que los plugins enlentezcan el sistema?

Saludos.
  #8 (permalink)  
Antiguo 30/03/2011, 09:27
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 9 meses
Puntos: 9
Respuesta: No encuentra plugin

Hola, el login te conviene implementarlo de esta manera:

http://akrabat.com/zend-auth-tutorial/

Etiquetas: frameworks-y-php-orientado-a-objetos, plugin
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 15:55.