Estoy tratando de crear un sistema de inicio de sesión con Zend que cuando un usuario intenta acceder a una página restringida será llevado a una página de inicio de sesión si no están 's inicie sesión. El problema que estoy teniendo es obtener la URL a la que estaban intentando acceder de antemano. ¿Hay una función Zend que devolverá todo después de la URL base? Por ejemplo, necesito "moduleName/controllerName/ActionName/param1/value1/param2/value2" etc etc. para enviar como un parámetro querystring a la página de inicio de sesión (por ejemplo: login /? Redirect = controllerName/actionName/param1/value1/param2/value)Zend - Obtener todo después de la base Url (Controlador, Acción y cualquier parámetro)
Puedo obtener el nombre del controlador y la acción, y obtengo los parámetros, pero ya incluye el módulo, el controlador y la acción también. Me gustaría obtener lo que necesito. Trabajé el largo camino de hacerlo de esta manera:
$controllerName = Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
$actionName = Zend_Controller_Front::getInstance()->getRequest()->getActionName();
$paramArray = Zend_Controller_Front::getInstance()->getRequest()->getParams();
$params = '';
foreach($paramArray as $key => $value)
$params .= $key . "/" . $value;
$this->_redirect('/admin/login/?redirect=' . $controllerName . "/" . $actionName . "/" . $params);
pero aun así termino con params como módulo/admin/controlador/index/etc, que no quiero. Entonces, ¿cómo puedo obtener todo como una cadena como está en la URL o al menos solo los parámetros en una cadena sin el controlador y la acción como valores de param?
** EDIT: Aquí está mi solución actual, pero no tiene que ser una forma más elegante de hacer esto **
$moduleName = $this->getRequest()->getModuleName();
$controllerName = $this->getRequest()->getControllerName();
$actionName = $this->getRequest()->getActionName();
$paramArray = $this->getRequest()->getParams();
$params = '';
foreach($paramArray as $key => $value)
if($key <> "module" && $key <> "controller" && $key <> "action")
$params .= $key . "/" . $value . "/";
$this->_redirect('/admin/login/?redirect=' . $moduleName . "/" . $controllerName . "/" . $actionName . "/" . $params);
Parece un buen candidato pero también devuelve la baseUrl. ¿Hay alguna forma de obtener todo comenzando con/moduleName/controllerName/actionName/param1/value1/param2/value2? – Ryan
Para obtener todo después de la baseUrl, no tengo una solución a mano. En mi situación, después de iniciar sesión, tomo el URI completo y lo redirecciono de la siguiente manera: '$ this -> _ redirigir ($ full_url, array ('prependBase' => false));' ¿Eso ayuda? –
Hola, Derek, no sabía que _redirect tomó ese conjunto de opciones con la opción prependBase. Eso es bueno saber, gracias. Por ahora tengo todo configurado como se menciona en mi edición anterior, pero puede cambiar a esto en algún momento. Gracias. – Ryan