Soumettre la recherche
Mettre en ligne
極める routes.php
•
27 j'aime
•
14,728 vues
Masahiro Akita
Suivre
CakePHP勉強会#4@Tokyoでの発表資料です。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 35
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較
hiroi10
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
SPAのルーティングの話
SPAのルーティングの話
ushiboy
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御
OSSラボ株式会社
Recommandé
MySQL5.6と5.7性能比較
MySQL5.6と5.7性能比較
hiroi10
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
SPAのルーティングの話
SPAのルーティングの話
ushiboy
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
初めてでも30分で分かるSpring 5 & Spring Boot 2オーバービュー
Masatoshi Tada
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
JobSchedulerでのジョブの多重実行・排他制御
JobSchedulerでのジョブの多重実行・排他制御
OSSラボ株式会社
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
REST: From GET to HATEOAS
REST: From GET to HATEOAS
Jos Dirksen
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
PHP の GC の話
PHP の GC の話
y-uti
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
Tomohiko Himura
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
ADRという考えを取り入れてみて
ADRという考えを取り入れてみて
infinite_loop
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
iRidge, Inc.
OPcache の最適化器の今
OPcache の最適化器の今
y-uti
Redux toolkit
Redux toolkit
ofoefiergbor1
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
Masahiro Akita
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
kenjis
Contenu connexe
Tendances
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
shinjiigarashi
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Tetsutaro Watanabe
Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
Yoshio Hanawa
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
REST: From GET to HATEOAS
REST: From GET to HATEOAS
Jos Dirksen
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
T. Suwa
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
shinjiigarashi
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
Masatoshi Tada
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
PHP の GC の話
PHP の GC の話
y-uti
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
Tomohiko Himura
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
do_aki
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
ADRという考えを取り入れてみて
ADRという考えを取り入れてみて
infinite_loop
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
iRidge, Inc.
OPcache の最適化器の今
OPcache の最適化器の今
y-uti
Redux toolkit
Redux toolkit
ofoefiergbor1
Tendances
(20)
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
Spring bootでweb バリデート編
Spring bootでweb バリデート編
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
REST: From GET to HATEOAS
REST: From GET to HATEOAS
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
PPL 2022 招待講演: 静的型つき函数型組版処理システムSATySFiの紹介
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
Spring Bootの本当の理解ポイント #jjug
Spring Bootの本当の理解ポイント #jjug
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
PHP の GC の話
PHP の GC の話
Rails の自動読み込みを支える技術
Rails の自動読み込みを支える技術
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
ADRという考えを取り入れてみて
ADRという考えを取り入れてみて
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
OPcache の最適化器の今
OPcache の最適化器の今
Redux toolkit
Redux toolkit
En vedette
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
Masahiro Akita
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
kenjis
徳丸本とAmazonと僕
徳丸本とAmazonと僕
monmon Kumagai
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
Yuta Matsumura
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
Soudai Sone
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
Naoto Mawatari
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
MasterCode.vn
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
Masao Maeda
En vedette
(8)
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
CakePHPをさらにDRYにする、ドライケーキレシピ akiyan.com 秋田真宏
10分でわかるFuelPHP @ OSC2013 Nagoya
10分でわかるFuelPHP @ OSC2013 Nagoya
徳丸本とAmazonと僕
徳丸本とAmazonと僕
CakePHP3で学ぶAPIマネジメント #phpconfuk
CakePHP3で学ぶAPIマネジメント #phpconfuk
今、最も勢いのあるWebフレームワーク「fuel php」
今、最も勢いのあるWebフレームワーク「fuel php」
最近、僕がハマったFuelPHPの紹介
最近、僕がハマったFuelPHPの紹介
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
フラットなPHPからフレームワークへ
フラットなPHPからフレームワークへ
極める routes.php
1.
極める routes .php
by akiyan 第4 回C akeP H P 勉強会@ Tokyo at 2 0 0 9 .5 .2 2
2.
自己紹介 ●
名前:akiyan / 秋田真宏 ● 所属:株式会社ヨセミテ ● ブログ:akiyan.com ● 連載:C akeP H P で高速W ebアプリ開発 (g ihyo.jp)
3.
今回の発表のゴール ●
URLを自由に作れるようになります。 ● ビューでリンクを作るときに、 $html->url('/users/detail/' . $user['User']['id']) みたく、URLを自前で作っているところを全部 直したくなります。 ● Paginationで自由にパラメータを引き継げるよ うになります。 ● routes.phpをいじるのが怖くなくなります。
4.
目次
みなさまに質問 ● routes.phpとは ● 基本の書式 ● 応用の書式 ● 逆ルーティング! ● Paginatorにパラメータをつける(今日の目玉) ● よくあるトラブル
5.
みなさまに質問 routes.phpを知っている人? routes.phpを書き換えたことがある人? rewriteを使わずに、routes.phpだけで大抵のURL を作れる自信がある人?
6.
routes.phpとは 1 /
2 ● ルーティング。URLからコントローラやアク ションを特定する処理や設定のこと。 ● 例:普通なら /users/view/akiyan でアクセスす るところを /member/akiyan でもアクセスでき るようにする、など。
7.
routes.phpとは 2 /
2 ● 設定は app/config/routes.phpに書く。 ● 設定は上から順に検索され、最初にマッチした 設定が適用される。 ● URL中にパラメータが点在するような複雑な URL (例:/users/akiyan/blog/category/git/ ) も作れる。
8.
基本の書式
静的割りあて :action paramsルーティング wildcard
9.
基本の書式 [ 静的割り当て
] ● 単純にURLを置換したい。 ● Router::connect('/memberlist/', array( 'controller' => 'users', 'action' => 'index', ); ● /users/index/ が /memberlist/ でアクセスできる ようになる。
10.
基本の書式 [ :action
] ● アクション名はURLから受け取りたい。 ● '/members/:action/', array( 'controller' => 'users', ) ● /users/withdraw/ が /members/withdraw/ でも アクセスできるようになる。
11.
基本の書式 [ paramsルーティング
] ● URL中にパラメータを自由な場所に書きたい。 ● '/member/:user_id/:action/', array( 'controller' => 'users', ); ● /user/akiyan/active/ でアクセス ● UsersController::active() が呼ばれる ● $this->params['user_id']; で akiyan を参照でき る。
12.
ここでハマりポイント ●
'/member/:user_id/', array( 'controller' => 'users', 'action' => 'postview', ); って書いて、 /user/akiyan/28 でアクセスできない! ● 原因:”28”があるせいでURLルールに完全にマッチせ ず、ルーティングされなくなった(普通に解釈されて しまった)。
13.
基本の書式 [ wildcard
] ● アクション関数にパラメータを渡したい。 ● '/member/:user_id/post/*', array( 'controller' => 'users', 'action' => 'postview', ); ● /member/akiyan/post/28 ● Controller::postview($post_id) ● ($post_id, $sub_id = null) など、パラメータの 数も可変でいける。
14.
応用の書式 パラメータ制約 静的パラメータを渡す
15.
応用の書式 1/2 [
パラメータ制約 ] ● /posts/28 を /posts/view/28 にマッピングしたい ● ただし、28の部分は数字のときだけにしたい。 ● Router::connect('/posts/:id/', array( 'controller' => 'posts', 'action' => 'view', ), array( 'id' => '[0-9]+', )); ● Router::connect()への第三匹数が登場。 ● 正規表現で全体にマッチすることが条件(制 約)となる。
16.
応用の書式 2/2 [
静的パラメータ ] ● URLから静的に、コントローラにパラメータを 渡したい。 ● '/users/', array( 'controller' => 'users', 'action' => 'index', 'status' => 'active', ); ● $this->params['status'] に 'active' が入る ● 何がうれしいの?
17.
静的パラメータで嬉しいこと ●
静的パラメータは、paramsルーティングのデフォルト 値としても使える。 ● '/memberlist/:status/', array( 'controller' => 'users', 'action' => 'index', 'status' => 'active', ); ● /meberlist/ だと 'active' になる。 ● /memberlist/withdraw/ だと 'withdraw' で上書きされ る。 ● ゆえに、issetしなくていい!!
18.
逆ルーティング!
逆ルーティングとは 逆ルーティングが使える箇所 逆ルーティングの基本 逆ルーティングの動作例
19.
逆ルーティングとは ●
ルーティングは URL からコントローラーやアクショ ンを特定すること。 ● 逆ルーティングは、コントローラー(名)やアクション (名)から、URLを特定(作成)すること。ルーティングの 逆。
20.
逆ルーティングが使える箇所 ●
HtmlHelper::link(), url() ● PaginatorHelper::numbers(), next(), prev(), etc... ● Controller::redirect(); ● AjaxHelper …etc.. ● URLを渡す/URLが内部で作られるメソッドは おそらく全て。
21.
逆ルーティングの基本 ●
routes.phpに書いたルーティングの設定が、そ のまま逆ルーティングの設定になります。 ● 完全マッチが基本です。ルーティングと同じ。
22.
逆ルーティングの動作例 1 ●
Router::connect('/userlist/', array( 'controller' => 'users', 'action' => 'index', ); ● $html->url(array( 'controller' => 'users', 'action' => 'index', )); ● /userlist
23.
逆ルーティングの動作例 2 ●
$html->url(array( 'controller' => 'users', 'action' => 'index', '?' => array('keyword' => 'fuga'), '#' => 'results', )); ● /userlist?keyword=fuga#results
24.
キー名に ? て!
キー名に # て! (マニュアル記載なし)
25.
Paginatorにパラメータをつける
ポイント paramsルーティング QUERY_STRING
26.
Paginatorにパラメータをつけるポイント コントローラーでPaginationをセットアップする ときの、 $this->paginate => array('Model'
=> array( 'options' => … )); がポイントです! (マニュアル未記載、日本語情報未確認)
27.
パラメータ例 1 [
paramsルーティング ] ● '/memberlist/:status/', array(...); ● $this->paginate = array('Model' => array( 'options' => array( 'status' => 'active', ), ); ● $patinator->next(); ● /memberlist/active/page:2
28.
パラメータ例 2 [
QUERY_STRING ] ● '/memberlist/', array(...) ● $this->paginate = array('Model' => array( 'options' => array( '?' => array('keyword' => 'fuga'), '#' => 'results', ), ); ● /memberlist/page:2?keyword=fuga#results
29.
注意点 ●
paginateするコントローラー名とアクション名 が、実行中のものと異なる場合はoptionsの中で 指定が必要です。 'options' => array( 'controller' => 'users', 'action' => 'index', … ), ● そんなケースは稀ですけどね。
30.
これでもうPaginatorは怖くない!
31.
よくあるroutes.phpのトラブル例
32.
ルーティングをいろいろ書いていた らいつのまにかマッチしなくなった ●
主な原因 ● 他のルーティングに先にマッチしている。 ● 解決策(いずれか、または組み合わせで) ● *で書くのをやめて、paramsルーティングで設定 する。 ● パラメータ制約を加える。 ● 設定の順序を変える。
33.
トラブル実例 ●
'/member/*', array( 'controller' => 'users', 'action' => 'index') '/member/:id/', array( 'controller' => 'users', 'action' => 'view') ● /member/28 でアクセスするとどうも上のルー ルが適用されているっぽい。 ● /member/* に先にマッチしてしまっている。 ● /member/:id/ を先にしつつ、制約で 'id' => '[0- 9]+' を加える。(制約を加えないと今度は:idに 食われる)
34.
routes.phpデバッグのTIPS ●
pr($this->params) が便利です。 ● デバッグ目的でなくても一度見ておくと CakePHPの構造が垣間見えて面白いです。
35.
ご清聴ありがとうございました
Télécharger maintenant