スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

symfony1.4 jobeet 5日目

今日はルーティングの説明

この辺も基本的な事は1.0やってるのでデフォルト生成されるrouting.ymlの中身は特に問題ない。

1.4ではルーティングにモデルを関連出来るようになったのがすごい便利。

1.0でも以下のような設定は出来たけど値はテンプレートの方できちんと設定してあげる必要があった。
# apps/frontend/config/routing.yml
job_show_user:
url: /job/:company/:location/:id/:position
param: { module: job, action: show }

#template
url_for('job/show?company='.$job->getCompany().'&location='.$job->getLocation().'&id='.$job->getId().'&position='.$job->getPosition())


これが1.4だとルーティングにモデルを関連付けられるから以下のように簡単に書ける。
# apps/frontend/config/routing.yml
job_show_user:
url: /job/:company_slug/:location_slug/:id/:position_slug
class: sfDoctrineRoute
options: { model: JobeetJob, type: object }
param: { module: job, action: show }
requirements:
id: \d+
sf_method: [get]

#template
url_for('job_show_user', $job)


routing.ymlの方は複雑になってるように見えるけどcompany_slugとかのxxxx_slugは実際はJobeetJobモデルが持ってるメソッド(getCompanySlug()等)でそれを勝手にコールしてくれてる。

後、ルーティングにモデルが関連付いてるから1.0ではアクションの中でモデルを生成(取得)するコード書いてたけどその必要が無くなった。404Unlessもルーティングの方できちんとハンドリングしてくれる。

classにsfDoctrineRouteCollectionを指定するとlist,new,create,edit,update,delete,showのルーティングを勝手に生成してくれるから全部のアクションに対して1つずつ設定する必要はない。確認画面(conf)をどう設定するかは課題。
1.0やってたときは個人的にnew,createとedit,updateまとめて処理してたからそれが今回もできるからフォームクラスを勉強してからだな。

後、個人的にapp:routesタスクがめちゃめちゃ便利。1.0時はルーティングがうまくいかなくてキャシュの下のルーティングファイル調べたりしてたけどapp:routesでルーティングの詳細な情報が出るからもうその必要がなさそう。
スポンサーサイト

コメントの投稿

非公開コメント

検索フォーム
カレンダー
06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -
RSSリンクの表示
last.fm
twitter
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。