php zend-framework redirect

php - Zend: redirigir a la acción con parámetros



zend-framework redirect (5)

Cómo se obtiene el param sorta depende de dónde se encuentre,

No tiene que atrapar un $ param de solicitud para lograr lo que quiere hacer aquí. Solo está usando el asistente de FlashMessenger para agregar un mensaje a la pila. A continuación, recupera el mensaje dentro de la acción en la que desea mostrar el mensaje, y luego lo asigna a la vista como lo hago en la acción successAction. Tenga en cuenta que puede pasar cualquier $ var o matriz de datos asignándolos en el controlador como: $ this-> view-> var = $ var; Dentro de la vista que se accederá como $ this-> var.

Como preguntaste sobre el inicio de sesión, te mostraré cómo suelo hacerlo. No es la mejor manera.

La vista de índice de mi LoginController tiene la forma:

public function indexAction() { $form = new Zfcms_Form_Login; $this->view->form = $form; /*check for valid input authenticate using adapter persist user record to session redirect to original request URL if present*/ if ($this->getRequest()->isPost()) { if ($form->isValid($this->getRequest()->getPost())) { $values = $form->getValues(); $authAdapter = $this->getAuthAdapter(); # get the username and password from the form $username = $values[''username'']; $password = $values[''password'']; # pass to the adapter the submitted username and password $authAdapter->setIdentity($username) ->setCredential($password); $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($authAdapter); if ($result->isValid()) { # all info about this user from the login table # ommit only the password, we don''t need that $userInfo = $authAdapter->getResultRowObject(null, ''password''); # the default storage is a session with namespace Zend_Auth $authStorage = $auth->getStorage(); $authStorage->write($userInfo); $session = new Zend_Session_Namespace(''zfcms.auth''); if (isset($session->requestURL)) { $url = $session->requestURL; unset($session->requestURL); $this->_redirect($url); } else { $this->_helper->getHelper(''FlashMessenger'') ->addMessage(''You were successfully logged in as '' . $userInfo->username); $this->_redirect(''/login/success''); } } else { $this->view->message = ''You could not be logged in. Please try again.''; } } } }

En la acción de éxito hacemos esto:

public function successAction() { if ($this->_helper->getHelper(''FlashMessenger'')->getMessages()) { $this->view->messages = $this->_helper ->getHelper(''FlashMessenger'') ->getMessages(); } else { $this->_redirect(''/login/success''); } }

En el script de vista podemos hacer algo como lo que tengo a continuación. La razón por la que lo hago de esta manera es que a veces paso solo un mensaje en un controlador, en este caso simplemente uso:

$this->view->message = ''message goes here'';

Luego, captúrelos si están configurados en la vista:

<?php if(isset($this->message) || isset($this->messages)): ?> <?php if(is_array($this->messages)) { echo implode($this->messages); } else { echo $this->message; }?> <?php endif ?>

Estoy usando zend framework. Estoy usando la siguiente declaración para redirigir a otra acción.

$this->_helper->redirector(''some_action'');

La declaración de arriba está funcionando perfectamente y se llama ''some_action''. Ahora quiero pasar algunos parámetros a ''some_action'' como este.

some_action?uname=username&[email protected]

Y cómo obtener parámetros en la acción llamada. Por lo general, nos gusta esto:

$userName = $_REQUEST[''uname'']; $usermail = $_REQUEST[''umail''];

¿Cómo hacer esto? Código de ejemplo por favor. Gracias


Es posible que desee probar esto:

$this->_redirector->gotoUrl(''/my-controller/my-action/param1/test/param2/test2'');


También puede agregar $ params decir como ID de usuario

public function indexAction () { $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { // Identity exists; get it $identity = $auth->getIdentity(); $this->_redirect(''/user/profile/'' . $identity->user_id); } else { $this->_redirect(''/user''); } }

Me olvidé de mencionar, por supuesto, esto es suponiendo que tienes la configuración de enrutamiento para aceptar un $ param. Como ejemplo, el enrutamiento se parecería a esto para la página a la que se redirecciona en el ejemplo anterior:

/application/configs/application.ini

resources.router.routes.user-profile.route = /user/profile/:id resources.router.routes.user-profile.defaults.module = default resources.router.routes.user-profile.defaults.controller = user resources.router.routes.user-profile.defaults.action = profile


Utilice el método Zend_Controller_Action::redirect() (que simplemente pasa al método de ayuda de Sarfraz)

$this->redirect(''/module/controller/action/username/robin/email/[email protected]'');

Nota: el método _redirect() está en desuso a partir de Zend Framework 1.7. Use redirect() lugar.

Y luego en la acción llamada:

$username = $this->_getParam(''username''); $email = $this->_getParam(''email'');

_getParam () toma un segundo argumento opcional que se establece en la variable como valor predeterminado si el parámetro no se encuentra.


puedes probar con el redirector:

$params = array(''user'' => $user, ''mail'' => $mail); $this->_helper->redirector($action, $controller, $module, $params);