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は中々便利な機能だったので無くなるのは残念ですが、代替機能があるのは嬉しいことです。
- Newer: CakePHP Modelに関する6つの誤解
- Older: CakePHP DboSourceをPHP5らしく使う
トラックバック: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….