2018-10-26に更新

携帯によって表示を変える

まず、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開発者

Crieitの開発者です。 主にLAMPで開発しているWebエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, Vue.js, RoR 趣味:Elixir, Phoenix, Node, Nuxt, Express, React等色々

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント