Tengo miembros que se pueden bloquear y cuando el miembro está bloqueado, quiero enviarlos a una página de error personalizada, ¿cómo haré eso en Zend Framework? ProbéCómo enviar a páginas de error personalizadas Zend Framework?
throw new Zend_Controller_Dispatcher_Exception('Your message here');
pero no dice "aquí su mensaje", dice "página no encontrada" cuando hago esto.
aquí está mi controlador de errores.
<?php
class ErrorController extends Zend_Controller_Action
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Page not found';
break;
// 666 error -- controller or action not found
$this->getResponse()->setHttpResponseCode(666);
$this->view->message = 'Blocked';
break;
default:
// application error
$this->getResponse()->setHttpResponseCode(500);
$this->view->message = 'Application error';
break;
}
// Log exception, if logger available
if ($log = $this->getLog()) {
$log->crit($this->view->message, $errors->exception);
}
// conditionally display exceptions
if ($this->getInvokeArg('displayExceptions') == true) {
$this->view->exception = $errors->exception;
}
$this->view->request = $errors->request;
}
public function getLog()
{
$bootstrap = $this->getInvokeArg('bootstrap');
if (!$bootstrap->hasPluginResource('Log')) {
return false;
}
$log = $bootstrap->getResource('Log');
return $log;
}
}
Aquí está la documentación, http://framework.zend.com/manual/en/zend.exception.using.html yo no lo entiendo :(
¡Gracias por la respuesta! ¿Qué piensas de la respuesta de Cemal con respecto al manejo de problemas como que los miembros bloqueados reciban un mensaje de error con este manejador de errores? ¿Debería usarlo o programar usando otro controlador? – Darius
Sería tan fácil llamar a un asistente de acción o método estático como lanzar una excepción y hacer que el controlador de error lo maneje. Si bien el plugin ErrorHandler predeterminado está diseñado para detectar excepciones específicas como errores 404, tiene sentido no complicarlo demasiado. He hecho modificaciones menores a mis controladores de errores para manejar otras condiciones, así que supongo que si se adapta a sus necesidades, siga las instrucciones del manual y simplemente implemente un asistente que lo haga. – drew010