代码之家  ›  专栏  ›  技术社区  ›  erjiang

cakephp:提供其他视图格式?

  •  0
  • erjiang  · 技术社区  · 14 年前

    我目前有一个视图,我想分为许多不同的格式,每个格式都有一个不同的CTP。我想为特定的设备提供专门格式化的页面,为每个PC、Kindle、iPhone等设备提供一个模板。

    有没有一种在这样的视图之间切换的规范方法?每个网站的网址应该是不同的,这样我就可以把Kindle版本作为书签,并在PC上查看。

    1 回复  |  直到 14 年前
        1
  •  2
  •   deceze    14 年前

    下面是我在项目中使用的一些示例代码,用于根据当前语言自动呈现替代视图文件。这允许您将视图另存为 /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);
        }
    }