Страница CakePHP 404 не использует макет, установленный в AppController - PullRequest
0 голосов
/ 11 февраля 2011

У меня есть 2 версии моего сайта (в зависимости от того, какой домен использовался для доступа к нему).Каждая версия - это совершенно другой бренд.

В моем AppController у меня есть что-то вроде этого:

// use default layout for posh site
// use cheap layout for cheap site
function beforeFilter() 
{
    parent::beforeFilter(); 

    if(isCheap())
    {
        $this->layout = 'cheap';
    }      
} 

Так что теперь, когда кто-то заходит на мой сайт через posh.com, он получает шикарный макетЕсли кто-то заходит на мой сайт через cheap.com, он получает дешевый макет.

Однако, если кто-то переходит на страницу 404 на дешевом сайте, он не загружает дешевый макет, он загружает макет по умолчанию.Поэтому, с их точки зрения, они вдруг окажутся на другом сайте.

Как я могу это исправить?

1 Ответ

1 голос
/ 12 февраля 2011

Это похоже на работу, хотя мне пришлось продублировать логику, что мне не нравится.

Я создал файл app/error.php, содержащий:

class AppError extends ErrorHandler 
{ 
    function error404($params) 
    { 
        if(isCheap())
        {
            $this->controller->layout = "cheap";
        } 
        parent::error404($params); 
    } 
} 
...