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

Plugin Login

Estas en el tema de Plugin Login en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, estoy intentando crear un sistema de login a traves de un plugin propio, cuento lo que hice y quiero saber que estoy haciendo mal. ...
  #1 (permalink)  
Antiguo 24/02/2011, 07:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Plugin Login

Hola, estoy intentando crear un sistema de login a traves de un plugin propio, cuento lo que hice y quiero saber que estoy haciendo mal.

Tengo la siguiente clase en "application/plugin/Login.php"
Código PHP:
class Login extends Zend_Controller_Plugin_Abstract
{
    private function 
__construct()
    {
                    
$form = new Zend_Form;
                    ...
                    echo 
$form;
    }

Luego desde layout.phtml intento llamar a la clase Login para que muestre el formulario
Código PHP:
$front Zend_Controller_Front::getInstance();
$front->registerPlugin(new Login()); 
Bien quisiera que corrijan mis errores, que me falta, que estoy haciendo mal, la ubicación de la clase Login es correcta?
  #2 (permalink)  
Antiguo 24/02/2011, 07:58
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Plugin Login

La clase debería ser Application_Plugin_Login.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 24/02/2011, 08:00
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Plugin Login

Hola, no soy un gran experto en ZF pero:
1) los plugins generlamente van en un archivo dentro de la carpeta "library", y en el nombre del plugin tienes que poner los namespaces por lo tanto si el plugin esta alojado en library/mis/plugins el nombre del plugin sería
Código PHP:
Ver original
  1. class Mis_Plugins_Login extends Zend_Controller_Plugin_Abstract{
  2. ...

2) Tenes que registrarlo en el Boostrap o en el application.ini

3) creo que para lo que queres hacer es mejor un ViewHelper a un plugin (si lo que quieres es mostrar un formulario).


PD: edito, no vi la respuesta de masterpuppet que de esto sabe y mucho.
  #4 (permalink)  
Antiguo 24/02/2011, 08:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Plugin Login

Cita:
Iniciado por principianteZF Ver Mensaje
Hola, no soy un gran experto en ZF pero:
1) los plugins generlamente van en un archivo dentro de la carpeta "library", y en el nombre del plugin tienes que poner los namespaces por lo tanto si el plugin esta alojado en library/mis/plugins el nombre del plugin sería
Código PHP:
Ver original
  1. class Mis_Plugins_Login extends Zend_Controller_Plugin_Abstract{
  2. ...

2) Tenes que registrarlo en el Boostrap o en el application.ini

3) creo que para lo que queres hacer es mejor un ViewHelper a un plugin (si lo que quieres es mostrar un formulario).


PD: edito, no vi la respuesta de masterpuppet que de esto sabe y mucho.
Como hago el paso dos, osea quisiera registrarlo en el bootstrap, como hago? Porque todavia sigo teniendo el mismo mensaje "Class 'Login' not found in layout.hptml" y supongo que es porque me falta este paso.
  #5 (permalink)  
Antiguo 24/02/2011, 09:57
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: Plugin Login

Lee el mensaje que te dejo Masterpuppet, el plugin debe de ir en /application/plugins/Login.php, llamarse Application_Plugin_Login, y con solo instanciarlo debe de funcionar.

Otra cosa es que no deberías de hacer un echo de información en el plugin, los Controller Plugins sirven para decisiónes que tienes que hacer (como verificar el acceso de un usuario/rol, etc), si lo que quieres es mostrar un form para login, eso lo debes de hacer ya en tu Controller, o usando un Controller Action Helper.

Saludos.
  #6 (permalink)  
Antiguo 24/02/2011, 11:09
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Plugin Login

Cita:
Iniciado por GatorV Ver Mensaje
Lee el mensaje que te dejo Masterpuppet, el plugin debe de ir en /application/plugins/Login.php, llamarse Application_Plugin_Login, y con solo instanciarlo debe de funcionar.

Otra cosa es que no deberías de hacer un echo de información en el plugin, los Controller Plugins sirven para decisiónes que tienes que hacer (como verificar el acceso de un usuario/rol, etc), si lo que quieres es mostrar un form para login, eso lo debes de hacer ya en tu Controller, o usando un Controller Action Helper.

Saludos.
Intenté como dice Masterpuppet pero no me funcionó, lo que hice fue mover el script y modificarlo de la siguiente manera y andubo bien:

/library/My/Login.php
Código PHP:
class My_Login extends Zend_Controller_Plugin_Abstract
{
    public function 
__construct()
    {
        
$form = new Zend_Form;
        ...
        return 
$form;
    }

Entiendo lo que me decis sobre la función de un plugin, en realidad en lugar de un "echo" iva un "return", el echo lo hago en el layout.phtml. Si te parece que este mecanismo esta mal me gustaría que me lo hagas saber.

GRACIAAAASSSS A TODOS!!!
  #7 (permalink)  
Antiguo 24/02/2011, 12:08
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Plugin Login

Si no te funciono es porque la ruta esta mal, como te dijo GatorV

Cita:
... el plugin debe de ir en /application/plugins/Login.php ...
la carpeta debe ser plugins no plugin.
Si queres mostrar el form en un par de actions, simplemente instancialo, y si queres por ejemplo tener todo el tiempo un formulario de login en el header, create un action helper, que procese el request y que tambien inyecte en la vista el form.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #8 (permalink)  
Antiguo 24/02/2011, 13:15
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Plugin Login

Cita:
Iniciado por masterpuppet Ver Mensaje
Si no te funciono es porque la ruta esta mal, como te dijo GatorV



la carpeta debe ser plugins no plugin.
Si queres mostrar el form en un par de actions, simplemente instancialo, y si queres por ejemplo tener todo el tiempo un formulario de login en el header, create un action helper, que procese el request y que tambien inyecte en la vista el form.

Saludos.
Acabo de intentarlo nuevamente, a pesar que ya lo habia hecho con la carpeta "plugins", pero me sigue tirando lo mismo "Class 'Application_Plugin_Login' not found in...".
Me debe estar faltando algo, no se que puede ser, yo simplemente tengo el plugin donde me indicas y luego para accederlo new Application_Plugin_Login().
Por favor espero tu respuesta.
  #9 (permalink)  
Antiguo 24/02/2011, 13:34
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Plugin Login

Comproba que en tu application.ini tenes el appnamespace seteado correctamente, debería ser así:

Código INI:
Ver original
  1. appnamespace = "Application"
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 24/02/2011, 15:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Plugin Login

Cita:
Iniciado por masterpuppet Ver Mensaje
Comproba que en tu application.ini tenes el appnamespace seteado correctamente, debería ser así:

Código INI:
Ver original
  1. appnamespace = "Application"
De 10, faltaba eso.
Directamente no tenia esa propiedad en el .ini, donde fucking dice eso en la documentación oficial?
No logro conseguir una buena documentación con ejemplos completos, alguien conoce alguna?

Desde ya MUUUCHAS GRACIAS!
  #11 (permalink)  
Antiguo 24/02/2011, 15:22
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Plugin Login

http://framework.zend.com/manual/1.1...ap.autoloading, debería estar creada y seteada, como creaste el proyecto ? a mano ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #12 (permalink)  
Antiguo 24/02/2011, 19:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 183
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Plugin Login

Cita:
Iniciado por masterpuppet Ver Mensaje
http://framework.zend.com/manual/1.1...ap.autoloading, debería estar creada y seteada, como creaste el proyecto ? a mano ?
Si, tal cual, la cree manualmente ya que no pude crear el proyecto automáticamente porque estoy en un servidor compartido. No se si hay alguna manera de crearlo automáticamente sin acceso a consola.
  #13 (permalink)  
Antiguo 01/03/2011, 08:54
 
Fecha de Ingreso: octubre-2009
Mensajes: 240
Antigüedad: 14 años, 6 meses
Puntos: 6
Respuesta: Plugin Login

Hola, yo los plugins los tengo alojados en la carpeta "library":
application/ library/plugins/unplugin.php

En este post se recomienda colocarlos en application, o sea fuera de "library".

Esto es indistinto o realmente hay que colocarlos en "application" ?

Saludos
  #14 (permalink)  
Antiguo 01/03/2011, 09:55
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: Plugin Login

Pues ya que son plugins de la aplicación deberían de ir en la carpeta application/plugins, pero si son plugins genericos que puedas intercambiar pueden ir sin problema en la carpeta library.

Saludos.
  #15 (permalink)  
Antiguo 01/03/2011, 11:46
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Plugin Login

Si bien no es obligatorio, a mi entender es preferible que siga la estructura de Zend, para mi en library van justamente las librerias, Zend, Doctrine, Symfony, en mi caso mi libreria que extiende Zend y utilizo en todos los proyectos, tambien por lo general tengo la libreria del proyecto en si, cabe señalar de que dentro de library los action helpers no van en library/My/Helper, sino que van en library/My/Controller/Action/Helper, pero todo esto es a gusto del consumidor, lo obligatorio es decirle al autoloader donde "buscar".

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: login, 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 01:52.