Dan doed vind hij die functie niet... En ik krijg dus ook al helemaal geen error pagina. De error controller staat waar hij moet staan dus normaal zou ik toch met die setErrorHandlerModule een error pagina moeten krijgen.
<?php
// Show every error
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
//ini_set('display_startup_errors', 0);
//ini_set('display_errors', 0);
// Add the zend library to the include path
set_include_path('../library' . PATH_SEPARATOR . get_include_path());
// Auto load every class we need
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
Zend_Loader::loadClass('Zend_Controller_Front');
// Set up layout
$layout = Zend_Layout::startMvc(array(
'layout' => 'default',
'layoutPath' => '../application/layouts',
'contentKey' => 'content',
));
// Set up front controller class
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(true);
$frontController->addModuleDirectory('../application/modules');
$frontController->setDefaultModule('index');
$frontController->setErrorHandlerModule('cms');
$frontController->dispatch();
Bedankt en waar moet de ->setDefaultModule dan komen? En in welke class zit die eigenlijk?
Want ik krijg nog de melding: Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' Wat er dus op wijst dat ik enkel nog de module moet aanpassen of de controller en action maar normaal alleen de module.
En die class had ik al juist hoor, is er ergens een lijstje met hoe je die hoofdletters moet gebruiken in ZF dat ik het mooi doe hoe het verwacht wordt.
<?php
// Show every error
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
//ini_set('display_startup_errors', 0);
//ini_set('display_errors', 0);
// Add the zend library to the include path
set_include_path('../library' . PATH_SEPARATOR . get_include_path());
// Auto load every class we need
require_once "Zend/Loader.php";
Zend_Loader::registerAutoload();
Zend_Loader::loadClass('Zend_Controller_Front');
// Set up layout
$layout = Zend_Layout::startMvc(array(
'layout' => 'default',
'layoutPath' => '../application/layouts',
'contentKey' => 'content',
));
// Set up front controller class
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(false);
$frontController->addModuleDirectory('../application/modules');
$frontController->setDefaultModule('index');
$frontController->setErrorHandler(array('module' => 'cms', 'controller' => 'error', 'action' => 'index'));
$frontController->dispatch();
<?php
// Show every error
error_reporting(E_ALL | E_STRICT);
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
//ini_set('display_startup_errors', 0);
//ini_set('display_errors', 0);
// Add the zend library to the include path
set_include_path('../library' . PATH_SEPARATOR . get_include_path());
// Auto load every class we need
require_once "Zend/Loader.php";
//Zend_Loader::registerAutoload();
Zend_Loader::loadClass('Zend_Layout');
// Set up layout
$layout = Zend_Layout::startMvc(array(
'layout' => 'default',
'layoutPath' => '../application/layouts',
'contentKey' => 'content',
));
// Set up front controller class
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(false);
$frontController->addModuleDirectory('../application/modules');
$frontController->setDefaultModule('index');
$frontController->getPlugin('Zend_Controller_Plugin_ErrorHandler');
$frontController->setErrorHandler(array('module' => 'cms', 'controller' => 'error', 'action' => 'index'));
$frontController->dispatch();
De errorhandler is een controller plugin. Wanneer er exceptions getroffen zijn, wordt de errorHandler ingeroepen. Deze plugin maakt gebruik van postDispatch().
Dat werkt nog steeds niet maar het lijkt me eenvoudiger als ik even alles doorstuur misschien doe ik iets stom fout ofzo.
En als je dus nog tips hebt voor mij over dingen die je opvallen als je het allemaal snel bekijkt (map structuur, andere dingen enz...) dan mag je dat ook altijd zeggen.
Bij de dispatch() methode van de front controller worden de plugins: errorhandler en viewrenderer geladen. Als je de errorhandler plugin wilt laden moet je bij je front het volgende zetten.
Blijkbaar is dit geen ideale oplossing aangezien je de plugin niet kan configureren en hij ingeladen wordt tijdens het dispatch proces. Als je registerAutoload() nog staan hebt kan je het volgende gebruiken.
De reden waarom er 100 staat is omdat de errorhandler standaard op de 100ste plek staat van de stack, zo worden de events van de errorhandler als laatste opgeroepen.