CakePHP: предоставить альтернативные форматы просмотра? - PullRequest
0 голосов
/ 12 ноября 2010

В настоящее время у меня есть одно представление, которое я хотел бы разделить на множество разных форматов, каждый с разным ctp.Я хочу предоставить страницу, отформатированную специально для определенных устройств, с шаблоном для каждого из ПК, Kindle, iPhone и т. Д.

Существует ли канонический способ переключения между видами, подобными этим?URL должен быть разным для каждого, чтобы я мог добавить в закладки версию Kindle и просмотреть ее на ПК, если захочу.

1 Ответ

2 голосов
/ 12 ноября 2010

Вот пример кода, который я использовал в проекте для автоматической визуализации файлов альтернативного представления на основе текущего языка.Это позволяет сохранять виды как /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);
    }
}
...