Symfonyに挑戦11「Jobeet 5日目」
5日目: ルーティング
今回は「ルーティング」機能についてやるようだ。
ルーティング機能について
覚書。
- ルーティングではURLと機能を結びつけたり、URLを見やすい形式に整形することができる。
- ルーティングの設定ファイル
jobeet/apps/frontend/config/routing.yml - プログラム内でのURLの記述方法
url_for('job/show?id='.$job->getId()) ↓上より下の方が動作が速いしオススメ url_for('@default?module=job&action=show&id='.$job->getId()) ↓配列にして渡すことも出来る url_for(array( 'module' => 'job', 'action' => 'show', 'id' => $job->getId(), 'company' => $job->getCompany(), 'location' => $job->getLocation(), 'position' => $job->getPosition(), ))
トップページのURLをカスタマイズ
jobeetのファイルを変更する
- jobeet/apps/frontend/config/routing.ymlを変更
- jobeet/apps/frontend/templates/layout.phpを開いてH1部分を編集。
- ターミナルを開いて、キャッシュを削除(symfony cc)してやる
Mac:~ kaneda$ cd ~/Sites/jobeet Mac:~ kaneda$ symfony cc
- http://jobeet.local/にアクセスしてjobeetの画面が表示され、ロゴをクリックしてトップページに移動できたら成功
仕事ページのURLをカスタマイズ
- またjobeet/apps/frontend/config/routing.ymlを変更
- jobeet/apps/frontend/modules/job/templates/indexSuccess.phpを編集。
- ターミナルを開いて、キャッシュを削除(symfony cc)してやる
- http://jobeet.local/job/sensio-labs/paris-france/1/web-developerにアクセスしてjobeetの画面だ出てきたら成功
- さらにjobeet/apps/frontend/config/routing.ymlを開いて、最終的にjob_show_userは↓に変更
job_show_user: url: /job/:company/:location/:id/:position class: sfRequestRoute param: { module: job, action: show } requirements: id: \d+ sf_method: [get]
requirementsのところでidが数字でメソッドがgetの時だけ適用するように制限
- jobeet/apps/frontend/modules/job/templates/indexSuccess.phpを開いて、
url_for('job/show?id='.$job->getId().'&company='.$job->getCompany().'&location='.$job->getLocation().'&position='.$job->getPosition())
の所を、↓に変更
url_for('job_show_user', $job)
仕事ページのURLをクリックするとハイフンが変になるのを修正
- jobeet/lib/model/JobeetJob.phpを編集
- jobeet/lib/Jobeet.class.phpを作成
- jobeet/apps/frontend/config/routing.ymlを変更
- キャッシュを削除(symfony cc)してやる
- http://jobeet.local/を開いてどれかユーザをクリックして、ちゃんとURLとページが表示されれば成功
404を表示するプログラムを変更
- jobeet/apps/frontend/modules/job/actions/actions.class.phpを開いてexecuteShowの所を変更
デフォルトルートをjobモジュールに設定
- jobeet/apps/frontend/config/routing.ymlを変更
- キャッシュを削除(symfony cc)してやる