2008年07月10日

[cakePHP1.2]モバイルサイトとPCの切り分け その1

cakePHP1.2でモバイルサイトとPCサイトでURL,レイアウトを使い分ける場合の設定方法。

cake1.1系ではwebserviceが使えたが、1.2系では使えなくなっているので、prefixを使用する。

1. URLルーティングでprefixを設定する

[app/config/routes.php]に下記を追加する。
Router::connect('/m/:controller/:action', array('prefix' => 'mobile'))

"/m/xxx/yyy"へアクセスがなされると、prefix=mobileを有効とする。


2. prefix用アクションを作成する

[app/controllers/xxx_controller.php]に下記を追加する。
class XxxController extends AppController {
public function mobile_yyy() {
// 通常のアクションを実装
}
}

xxxコントローラのyyyファンクションが実行されるようになる。
prefixが有効な状態のとき、アクションとして[prefix + _ + action]が呼ばれる。

※bakeしたときに生成される、index,add,edit,delete,viewコントローラそれぞれについて、mobile_index,mobile_addのように、接頭語に"mobile_"をつけたものを複製するとよい。


3.prefix用ビューを作成する
上記2.と同じように、PC用のビューファイルを複製して接頭語に"mobile_"をつけたものを作ればよい。

$html->link()などでURIを指定するときは、アクションにprefixが付いたアクション(mobile_yyy)を指定する。下の例なら「/m/xxx/yyy」がURIとして出力される。
echo $html->link('link', array('controller' => 'xxx', 'action' => 'mobile_yyy'));



4.prefix用レイアウトを作成する
(1)[app/controllers/xxx_controller.php]に下記を追加する。
function beforeRender()
{
if(isset($this->params['prefix'])){
$this->layout = 'mobile_'.$this->layout;
}

モバイル用URIへのアクセスがなされたとき、接頭語に"mobile_"がついたレイアウトが適用される。

(2)[app/views/layouts/mobile_default.ctp]を作成する。
※標準レイアウトが[default.ctp]の場合。


上記1〜3の参考記事:
CakePHP 1.2で携帯用ビューを表示する


上記4の参考記事:
モバイル用レイアウト



CakePHP ポケットリファレンス (Pocket Reference)
株式会社ブルーオーシャン 岡田 佳典
技術評論社
売り上げランキング: 34311
おすすめ度の平均: 5.0
5 いま発売されているcake系書籍で一番良いです





タグ:cakephp
posted by surviver at 23:42 | Comment(0) | TrackBack(0) | cakePHP
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック