Necesito ayuda con el siguiente tema, por favor. Tengo un proyecto programado con Zend en el cual necesito mostrar y validar un formulario de Login, perteneciente al controlador regauth, dentro de la vista index, perteneciente a otro controlador distinto.
Actualmente, dentro de index.phtml, lo consigo con
Código PHP:
echo $this->action('login', 'regauth');
Tras leer otros post del foro creía haber encontrado la solución utilizando el Action Stack Plugin, pero parece ser que también desaparecerá.
Después de consultar varias webs he llegado a la conclusión de que la solución óptima pasa por crear un View Helper. ¿Pero cómo? Me siento bastante perdido.
En resumen: tengo un controlador regauth con una acción login que muestra y valida un formulario. Necesito integrar la vista login.phtml dentro de index.phtml validando el form correctamente.
¿Alguien me puede guiar, por favor?
Pongo partes del código por si aclara mejor el problema:
Controlador:
Código PHP:
class Principal_RegAuthController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
}
//Método para el Login
public function loginAction()
{
{
//Creo un nuevo objeto con el form del logueo
$form = new Principal_Form_Login();
//Recojo el valor de la casilla recordarme
$recordar = $form->getAttrib('recordarme');
//Compruebo el request
$request = $this->getRequest();
//Si ha sido enviado mediante POST lo valido y proceso
if ($request->isPost()) {
if ($form->isValid($request->getPost())) {
//Nuevo objeto UsuarioLogicaNegocio
$comprobarLogin = new Principal_Model_UsuarioLogicaNegocio();
//Le aplico el metodo ValidarUsuario. Si retorna TRUE redirijo a INDEX
try {
$comprobarLogin->ValidarUsuario($form->getValues());
} catch (Exception $e){
$flashMessenger = $this->_helper->flashMessenger;
$flashMessenger->addMessage($e->getMessage());
$this->_redirect('regauth/login');
}
if($form->getValue('recordarme') == 1) {
Zend_Session::rememberMe(1728000);
}
$this->_helper->redirector('index', 'index');
}
}
//Si el request no viene mediante POST muestro en la vista el formulario
$this->view->form = $form;
}
}
Código PHP:
<!---Menu flotante con ventana de Login-->
<div id="boxes">
<!-- Start of Login Dialog -->
<div id="dialog1" class="window">
<div class="d-header">
<p>Por favor, identifiquese</p>
<?php
$this->title = 'Login';
$this->headTitle($this->title);
echo $this->form;
?>
<div id="avisos">
<?php echo $this->flashMessenger() ?>
</div>
</div>
<div class="d-blank">
</div>
</div>
<div id="mask"></div>
</div>
Código PHP:
<?php echo $this->action('login', 'regauth');?>