まず、cakeのライブラリの中にある
app_controller.phpを
appフォルダにコピーします。
次にrender関数をオーバーライドするため
以下の内容を書き込みます。
|php|
function render( $action = null, $layout = null, $file = null )
{
if( !empty( $SERVER["HTTP_USER_AGENT"] ) )
{
$ua = $_SERVER["HTTP_USER_AGENT"];
if( strpos( $ua, "DoCoMo" ) !== FALSE ){
$action = "i" . ( $action ? $action : $this->action );
$layout = "i_" . $this->layout;
}else if( strpos( $ua, "UP.Browser" ) !== FALSE ){
$action = "a_" . ( $action ? $action : $this->action );
$layout = "a_" . $this->layout;
}else if(
strpos( $ua, "SoftBank" ) !== FALSE ||
strpos( $ua, "Vodafone" ) !== FALSE ||
strpos( $ua, "J-PHONE" ) !== FALSE ){
$action = "j_" . ( $action ? $action : $this->action );
$layout = "j_" . $this->layout;
}
}
return parent::render( $action, $layout, $file );
}
||
このようにして携帯端末チェックを行うと、
個別のコントローラーは全くいじることなく、
携帯用にビューテンプレートを用意しておけば
自動的にそれが表示されます。
たとえば上記の例では、
/test/view
が表示された時、
PCではview.thtmlが使用されますが、
iモードだとi_view.thtml、
auだとa_view.thtml
が自動的に選択されて表示されます。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント