2011-02-11 110 views
0

我有2个版本的我的网站(取决于使用哪个域来访问它)。 每个版本都是完全不同的品牌。CakePHP 404页面未使用AppController中的布局设置

在我的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

这似乎是工作,我不得不重复逻辑,虽然我不喜欢。

我创建了一个包含文件app/error.php

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