Die Quelle stammt von Jonathan Snook http://snook.ca/archives/cakephp/static_pages_cakephp12/
- Code: Alles auswählen
- <?php
class AppError extends ErrorHandler {
function __construct($method, $messages) {
$params = Router::getParams();
if (($method == 'missingController' || $method == 'missingAction')
&& file_exists(VIEWS . DS. $params['controller'] . DS . $params['action'] . ".ctp")) {
$this->controller =& new AppController();
$this->controller->_set(Router::getPaths());
$this->controller->params = $params;
$this->controller->constructClasses();
$this->controller->viewPath = $params['controller'];
$this->controller->render($params['action']);
e($this->controller->output);
exit();
}
parent::__construct($method, $messages);
exit();
}
}
?>
Diese Datei speichert man als error.php im /app Verzeichnis.
Wie funktioniert's? Die Funktion überschreibt das Standard-Error-Handling von Cake. Wenn eine Datei mit dem Namen der Funktion und Endung .ctp im Verzeichnis des aufgerufenen Controllers existiert, dann wird diese einfach als statische Seite dargestellt.
Beispiel: der Aufruf lautet http://deineDomain.com/hallo/machwas und es gibt keinen Controller mit dem Namen "hallo" aber ein Verzeichnis /app/views/hallo und in diesem Verzeichnis eine Datei machwas.ctp, dann wird diese als statische Seite dargestellt.
Ciao Thomas