cakephpでスマートフォンかどうか判定する
会社ではSymfony2、自宅ではCakePHP2という二重生活な僕です。
さて、今日はcakephpでスマートフォンかどうかを判定するってお話です。
「cakephp スマホ 判定」でググってみるとわりとひどい結果ばかり(´・ω・`)
やっぱりみんなそんなにコントローラで処理したいんですかね…
僕はあまり賛成できないです。AppControllerで書けば確かにロジック共有できますけど、、、きもい、、、まじきもいーーー。。。
ってことでじゃあお前ならどうすんだよ?って話ですよね。
そうです、僕ならRequestHandlerComponentコンポーネントを使います。
しってます?RequestHandlerComponentにisMobile()ってメソッドがあることを。
まあぶっちゃけコントローラの中で以下のように書いても挙動的には一緒ですけどね。
|
|
RequestHandlerComponent::isMobuile()やCakeRequest::is('mobile')
はガラケーも判定されてしまうじゃねーかw
って突っ込んでしまいたくなりますよね。
じゃあどうすればいいの?
僕ならRequestHandlerComponentを拡張しますよーw
まあ本音はCakeRequestを継承していじりたいんですけどね。。。。それは無理なので。。。
こんな感じに
app/Controller/Component/MyRequestHandlerComponent.php
|
|
あとはコントローラ側で、以下のように指定してあげましょう。
app/Controller/HogeController.php
|
|
こんな感じが良いかと思いますー!