2010-11-11 44 views
0

我目前有一个观点,我想分成许多不同的格式,每个格式都有不同的ctp。我正在寻找提供专门为特定设备格式化的页面,每种PC,Kindle,iPhone等都有一个模板。CakePHP:提供替代视图格式?

是否有像这样的视图之间切换的规范方式?每个URL都应该有所不同,以便我可以将Kindle版本加入书签,并在个人电脑上查看(如果需要)。

回答

2

下面是我在项目中使用的一些示例代码,用于根据当前语言自动呈现替代视图文件。这允许您将视图保存为/views/[controller]/[lang]/[action].ctp。如果存在这样的专用文件,它将被渲染而不是标准视图。这应该很容易适应您的需求。

class AppController extends Controller { 
    public function render($action = null, $layout = null, $file = null) { 
     $lang = Configure::read('Config.language'); 
     $ext = $this->ext; 
     $act = $action; 
     if (!$act) { 
      $act = $this->action; 
     } 

     $i18nFile = new File(VIEWS . $this->viewPath . DS . $lang . DS . $act . $ext); 
     if (!$file && $i18nFile->exists()) { 
      $file = $i18nFile->path; 
     } 

     return parent::render($action, $layout, $file); 
    } 
}