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のファイルを変更する

  1. jobeet/apps/frontend/config/routing.ymlを変更
  2. jobeet/apps/frontend/templates/layout.phpを開いてH1部分を編集。
  3. ターミナルを開いて、キャッシュを削除(symfony cc)してやる
Mac:~ kaneda$ cd ~/Sites/jobeet
Mac:~ kaneda$ symfony cc
  1. 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)してやる

いらないデフォルトルートをコメントアウトする

  • jobeet/apps/frontend/config/routing.ymlのdefault_indexとdefaultの部分をコメントアウト
  • キャッシュを削除(symfony cc)してやる


かなり難しかったので、あまり理解できていない。