that's great to know, "errors always use the default layouts". :)
didn't see it in the manual..
thanks a tons for the solution.
On Jul 16, 7:52 pm, rtconner <[EMAIL PROTECTED]> wrote:
> Ah.. phpjoy, I had the same problem. There is no easy solution so far
> as I could find. No good solution that I liked anyways. Errors always
> use the default layout, and there is nothing you can do to change
> that.
>
> .. So.. the best solution as I could figure is this..
>
> Create /app/error.php and copy and paste ErrorHandler into it. Then
> modify it to read "class AppError extends ErrorHandler"
>
> The modify the file to handle dynamic layouts. Here I'll make it easy
> and just copy and past my (Cake 1.2) error.php file for you. Hope this
> helps.
>
> --------------------------------
> <?php
>
> /**
> * Override defaults cake error behavior
> */
> class AppError extends ErrorHandler {
>
> var $layout = 'error';
>
> /**
> * Displays an error page (e.g. 404 Not found).
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function error($params) {
> extract($params);
> $this->controller->base = $base;
> $this->controller->webroot = $this->_webroot();
> $this->controller->viewPath='errors';
> $this->controller->set(array('code' => $code,
>
> 'name' => $name,
>
> 'message' => $message,
>
> 'title' => $code . ' ' . $name));
> $this->controller->render('error404', $this->layout);
> exit();
> }
> /**
> * Convenience method to display a 404 page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function error404($params) {
> extract($params);
>
> if (!isset($url)) {
> $url = $action;
> }
> if (!isset($message)) {
> $message = '';
> }
> if (!isset($base)) {
> $base = '';
> }
>
> header("HTTP/1.0 404 Not Found");
> $this->error(array('code' => '404',
> 'name' => 'Not found',
> 'message' =>
> sprintf(__("The requested address %s was not found
> on this server.", true), $url, $message),
> 'base' => $base));
> exit();
> }
> /**
> * Renders the Missing Controller web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingController($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->webroot = $webroot;
> $this->controller->viewPath ='errors';
> $controllerName = str_replace('Controller', '', $className);
> $this->controller->set(array('controller' => $className,
>
> 'controllerName' => $controllerName,
>
> 'title' => __('Missing Controller', true)));
> $this->controller->render('missingController', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Action web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingAction($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->webroot = $webroot;
> $this->controller->viewPath = 'errors';
> $this->controller->set(array('controller' => $className,
>
> 'action' => $action,
>
> 'title' => __('Missing Method in Controller', true)));
> $this->controller->render('missingAction', $this->layout);
> exit();
> }
> /**
> * Renders the Private Action web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function privateAction($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->webroot = $webroot;
> $this->controller->viewPath = 'errors';
> $this->controller->set(array('controller' => $className,
>
> 'action' => $action,
>
> 'title' => __('Trying to access private method in class',
> true)));
> $this->controller->render('privateAction', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Table web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingTable($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('model' => $className,
>
> 'table' => $table,
>
> 'title' => __('Missing Database Table', true)));
> $this->controller->render('missingTable', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Database web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingDatabase($params = array()) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('title' => __('Scaffold Missing
> Database Connection', true)));
> $this->controller->render('missingScaffolddb', $this->layout);
> exit();
> }
> /**
> * Renders the Missing View web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingView($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('controller' => $className,
>
> 'action' => $action,
>
> 'file' => $file,
>
> 'title' => __('Missing View', true)));
> $this->controller->render('missingView', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Layout web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingLayout($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->layout = 'default';
> $this->controller->set(array('file' => $file,
>
> 'title' => __('Missing Layout', true)));
> $this->controller->render('missingLayout', $this->layout);
> exit();
> }
> /**
> * Renders the Database Connection web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingConnection($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('model' => $className,
>
> 'title' => __('Missing Database Connection', true)));
> $this->controller->render('missingConnection', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Helper file web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingHelperFile($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('helperClass' =>
> Inflector::camelize($helper) . "Helper",
>
> 'file' => $file,
>
> 'title' => __('Missing Helper File', true)));
> $this->controller->render('missingHelperFile', $this->layout);
> exit();
> }
> /**
> * Renders the Missing Helper class web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingHelperClass($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('helperClass' =>
> Inflector::camelize($helper) . "Helper",
>
> 'file' => $file,
>
> 'title' => __('Missing Helper Class', true)));
> $this->controller->render('missingHelperClass',
> $this->layout);
> exit();
> }
> /**
> * Renders the Missing Component file web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingComponentFile($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('controller' => $className,
>
> 'component' => $component,
>
> 'file' => $file,
>
> 'title' => __('Missing Component File', true)));
> $this->controller->render('missingComponentFile',
> $this->layout);
> exit();
> }
> /**
> * Renders the Missing Component class web page.
> *
> * @param array $params Parameters for controller
> * @access public
> */
> function missingComponentClass($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('controller' => $className,
>
> 'component' => $component,
>
> 'file' => $file,
>
> 'title' => __('Missing Component Class', true)));
> $this->controller->render('missingComponentClass',
> $this->layout);
> exit();
> }
> /**
> * Renders the Missing Model class web page.
> *
> * @param unknown_type $params Parameters for controller
> * @access public
> */
> function missingModel($params) {
> extract(Router::getPaths());
> extract($params, EXTR_OVERWRITE);
>
> $this->controller->base = $base;
> $this->controller->viewPath = 'errors';
> $this->controller->webroot = $this->_webroot();
> $this->controller->set(array('model' => $className,
>
> 'title' => __('Missing Model', true)));
> $this->controller->render('missingModel', $this->layout);
> exit();
> }
>
> }
>
> ?>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---