CakePHP:提供替代视图格式?

时间:2010-11-11 22:56:23

标签: templates cakephp views

我目前有一个视图,我想分成许多不同的格式,每种格式都有不同的ctp。我希望提供专门为某些设备格式化的页面,每个PC,Kindle,iPhone等模板。

这样的视图之间是否存在规范的切换方式?每个URL应该不同,以便我可以将Kindle版本加入书签并在PC上查看,如果我愿意的话。

1 个答案:

答案 0 :(得分: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);
    }
}