Home > CakePHP | PHP > CakePHP 1.2で携帯用ビューを表示する

CakePHP 1.2で携帯用ビューを表示する

この記事の所要時間: 332

CakePHP1.2ではCakePHP 携帯用ビューを表示するで利用していたwebservicesの機能が無くなります。

1.2-betaでRouting.webservicesをonにすると以下のようなメッセージが表示されます。

Deprecated: webservices routes are deprecated and will not be supported in future versions.  Use Router::parseExtensions() instead.

The prefix automagic in CakePHP routingで紹介されているように、1.2からはwebservicesに替わりprefixをURLルーティングで使用するようです。

そこで実際にどのように使用するかを試してみました。

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

Router::connect()の第2引数ではパラメータを連想配列で設定できるのですが、そこに’prefix’というキーで値を設定しておくと、対象URLにアクセスがあればこの機能が有効となります。

下記の例では[/m/foo/bar]へアクセスがあると、prefix=mobileが有効となります。

[app/config/routes.php]

Router::connect('/m/:controller/:action', array('prefix' => 'mobile'))

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

prefixが有効な状態だと、アクションとして[prefix + _ + action]が呼ばれるので、アクションを実装します。

1. の設定で[/m/foo/bar]へアクセスされると、prefix=’mobile’が有効となるので、FooController#mobile_bar()がアクションとして呼ばれます。

[app/controllers/foo_controller.php]

<?php
class FooController extends AppController {
  public function mobile_bar() {
    // 通常のアクションを実装
  }
}
?>

3. prefix用ビューを作成する

2.で実装したアクション同様にビューテンプレートを作成します。

これは通常どおり2.で作成したアクションに対応するビューテンプレートを作成するだけです。

注意点は$html->link()などでURLを指定する際は、アクションにprefixが付いたアクション(mobile_bar)を指定するという事です。下の例なら「/m/foo/bar」がURLとして出力されます。

[app/views/foo/mobile_bar.ctp]

<?php echo $html->link('link', array('controller' => 'foo', 'action' => 'mobile_bar')); ?>

△prefix用Component/Helperが読まれない

携帯電話では入出力文字エンコーディングを変換する事が多いのですが、webservicesを使用すると読み込まれるComponent/Helperで実装していました。

今のところprefixではこの機能が無いようなので、Controller#beforeFilter()/afterFilter()等で自前で実装する必要がありそうです。

そのリクエストで設定されているprefixはController#$params[‘prefix’]で確認できます。(@see 1.2 の WEBSERVICES パラメータ)

○prefix用アクションは直接呼ばれない

prefixに設定したアクションは直接呼ぶことができず、prefixで設定したURLでないとアクセスできません。

つまり1.のような設定の場合、[/foo/mobile_bar]へアクセスしてもprivate methodとして扱われてエラーとなります。

これによりprefixが設定されず、prefixアクション(mobile_bar)が呼ばれるのを防ぎます。

このあたりの挙動はRouting.adminと同じですね。:-D

webservicesは中々便利な機能だったので無くなるのは残念ですが、代替機能があるのは嬉しいことです。

Pocket

follow us in feedly

トラックバック:3

このエントリーのトラックバックURL
/blog/2008/04/cakephp_12_routing_prefix.html/trackback
Listed below are links to weblogs that reference
CakePHP 1.2で携帯用ビューを表示する from Shin x blog
pingback from [CakePHP] 携帯サイトの作り方まとめ - ElectronicBrain is eating BreakFast 09-02-24 (火) 19:00

[…] CakePHP 1.2で携帯用ビューを表示する | Shin x blog […]

pingback from [cakephp1.2] 携帯対応したい時ようのtips « のぶじゃすBLOG 10-02-05 (金) 13:59

[…] 一番参考にしたのは下記のサイトCakePHP 1.2で携帯用ビューを表示する | Shin x blog基本的には上記のサイトを参考にすれば出来ます。僕が書いたのはモバイルによってHTML置き換えたりとか。 […]

trackback from güzel sözler 12-02-21 (火) 8:30

güzel sözler Merhabalar sitemizde güzel sözler bulunuyor sitemiz gunden güne süper olmaya devam ediyor….

Merhabalar sitemizde güzel sözler bulunuyor sitemiz gunden güne süper olmaya devam ediyor….

Home > CakePHP | PHP > CakePHP 1.2で携帯用ビューを表示する

検索
フィード
メタ情報

Return to page top