Symfonyに挑戦13「Jobeet 7日目」

7日目: カテゴリページで遊ぶ

カテゴリページのルーティングルールを作る

  1. jobeet/apps/frontend/config/routing.ymlの先頭にcategoryルールを追加
  2. jobeet/lib/model/JobeetCategory.phpにgetSlug()メソッドを追加

【覚書】

  • 新しい機能を実装するときは最初にURLを決めてルーティングを作ることは良い習慣

カテゴリページへのリンクを表示する

  1. jobeet/apps/frontend/modules/job/templates/indexSuccess.phpを編集
  2. jobeet/lib/model/JobeetCategory.phpにcountActiveJobs()メソッドを追加
  3. jobeet/lib/model/JobeetJobPeer.phpにをごっそり書き換え
  4. http://jobeet.local/にアクセス。右下に「AND 22 MORE...」と表示された

【覚書】

  • 結果数を数えるだけならdoCount()が速い

カテゴリモジュールを作る

  1. generate:moduleでcategoryモジュールを生成
  2. jobeet/config/schema.ymlのjobeet_categoryテーブルにslugを追加
  3. jobeet/lib/model/JobeetCategory.phpのgetSlug()メソッドを削除し、代わりにsetName()メソッドを追加
  4. propel:build-all-loadタスクを使ってータベースにフィクスチャを投入
  5. jobeet/apps/frontend/modules/category/actions/actions.class.phpを編集
  6. jobeet/apps/frontend/modules/category/templates/indexSuccess.phpをshowSuccess.phpにリネームして編集

jobリストのtable部分をパーシャル化

  1. jobeet/apps/frontend/modules/job/templates/_list.phpを作成して内容をごっそりペースト
  2. jobeet/apps/frontend/modules/job/templates/indexSuccess.phpのテーブル部分をパーシャル読み込みに変更
  3. jobeet/apps/frontend/modules/category/templates/showSuccess.phpのテーブル部分をパーシャル読み込みに変更

【覚書】

  • テンプレートの一部で繰り返し使うコードがあるときは、パーシャルを作って再利用するといい

リストのページ分割

  1. jobeet/apps/frontend/modules/category/actions/actions.class.phpを編集
  2. jobeet/apps/frontend/config/app.ymlを編集
  3. jobeet/lib/model/JobeetCategory.phpにgetActiveJobsCriteria()メソッドを追加
  4. jobeet/lib/model/JobeetCategory.phpのcountActiveJobs()メソッドとgetActiveJobs()メソッドを修正
  5. jobeet/apps/frontend/modules/category/templates/showSuccess.phpを編集

【覚書】

  • ページを分割する機能はsymfonyについているsfPropelPagerを使えば楽


最後にsymfony ccしてhttp://jobeet.local/category/programmingにアクセス。ページが表示され、下段にページャーが付いていたら完了。