2010-11-11 2 views
0

У меня в настоящее время есть один вид, который я хотел бы разделить на несколько разных форматов, каждый с другим ctp. Я ищу, чтобы предоставить страницу, отформатированную специально для определенных устройств, с шаблоном для каждого ПК, 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); 
    } 
}