Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou tentando implantar o plugin ErrorHandler na minha aplicação e não estou conseguindo, estou seguindo este tutrotial
Clique aqui e tbm a documentação Clique aqui
no index.php da minha aplicação não estou conseguindo registrar o plugin:
$controlador = Zend_Controller_Front::getInstance();
$controlador->registerPlugin(new SecurityPlugin());
$controlador->registerPlugin(new Zend_Controller_Plugin_ErrorHandler());
erro: Fatal error: Class 'SecurityPlugin' not found in ou
erro: Fatal error: Class 'Zend_Controller_Plugin_ErrorHandler' not found in
Está configurado assim:
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'basePath' => APPLICATION_PATH,
'namespace' => ''
));
return $autoloader;
}
O meu arquivo Zend_Controller_Plugin_ErrorHandler está dentro de lib/Zend/Application está correto ?
Estou postando como consegui resolver, caso alguém tenha a mesma dúvida.
Deve está dentro da pasta controller do módulo ... Ex: application/site/controller/
ErrorController.php
<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_OpenId
* @subpackage Demos
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/**
* @see Zend_Controller_Action
*/
require_once 'Zend/Controller/Action.php';
/**
* Error Controller
*
* @category Zend
* @package Zend_OpenId
* @subpackage Demos
* @uses Zend_Controller_Action
* @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class ErrorController extends Zend_Controller_Action
{
/**
* Handle errors
*
* @return void
*/
public function errorAction()
{
$errors = $this->_getParam('error_handler', false);
if (!$errors) {
// Unknown application error
return $this->render('500');
}
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// Page not found (404) error
$this->render('404');
break;
default:
// Application (500) error
$this->render('500');
break;
}
}
}
application/site/views/scripts
404.phtml
Erro 404
application/site/views/scripts
500.phtml
Erro 500
arquivo raiz ... no meu caso index.php
index.php
$controlador = Zend_Controller_Front::getInstance();
$controlador->throwExceptions(false);Onde você crio esse SecurityPlugin.php ??? Uma das formas que o zend usa para carregar uma class é pelo o nome da sua Classe!!
Por exemplo:
Zend_Controller_Action
Essa classe ela está localizada:
/Zend/Controller/Action.php
Ou sejá é uma boa pratica você adotar esse conceito, por que as vezes o seu autoloader esta OK! Mas a nomenclatura da sua classe não esta.
>
Onde você crio esse SecurityPlugin.php ??? Uma das formas que o zend usa para carregar uma class é pelo o nome da sua Classe!!
Por exemplo:
Zend_Controller_Action
Essa classe ela está localizada:
/Zend/Controller/Action.php
Ou sejá é uma boa pratica você adotar esse conceito, por que as vezes o seu autoloader esta OK! Mas a nomenclatura da sua classe não esta.
Entendi, assim que resolver uma outra questão aqui vou dar uma pesquisada para melhor isso.
Veja se seu Autoloader esta configurado corretamente.
Ele pode ser configurado no seu arquivo Bootstrap.php