symfony askeet Day 3

  • MVCモデル
  • レイアウトを変える
  • デフォルトのページを変える
  • テストデータを定義する
  • データベースに内容を入れるためのバッチを作る
  • テンプレートを書き換える
  • 余計なモノを消す

MVCモデル

symfonyはModel,View,Controllerに分かれている。

レイアウトを変える

askeet Day 4に書かれているHTMLにaskeet/apps/frontend/templates/layout.phpを書き換える。
スタイルシートlayoutを追加しろとあるのでaskeet/apps/frontend/config/view.ymlも修正。
これでokと思ったら…あれ?画像ファイルがない。
http://svn.askeet.com/tags/release_day_3/web/
ここから力業でダウンロード。一個一個wgetでダウンロードする。

できた><

デフォルトのページを変える。

http://askeet.localhost/とアクセスすると
questionを表示するようにしたい。
askeet/apps/frontend/config/routing.ymlを修正する。

# default rules
homepage:
  url:   /
  param: { module: question, action: list }
(略)

テストデータを定義する

askeet/data/fixturesにtest_data.ymlを作る
内容はaskeetからコピペした。
以下は自分が内容を理解するために日本語で置き換えてみた。
なるほど、長いSQL文を書かなくてもいいんだ。

User:
  anonymous:
    nickname:   anonymous
    first_name: Anonymous
    last_name:  Coward

  ユーザー1:
    nickname:   fabpot
    first_name: Fabien
    last_name:  Potencier

  ユーザー2:
    nickname:   francoisz
    first_name: François
    last_name:  Zaninotto

Question:
  q1:
    title: タイトル
    user_id: ユーザー1
    body:  |
      内容
      内容

  q2:
    title: タイトル
    user_id: anonymous
    body:  |
     内容
      内容

  q3:
    title: タイトル
    user_id: ユーザー2
    body:  |
      内容
      内容

Interest:
  i1: { user_id: ユーザー1, question_id: q1 }
  i2: { user_id: ユーザー2, question_id: q1 }
  i3: { user_id: ユーザー2, question_id: q2 }
  i4: { user_id: ユーザー1, question_id: q2 }

データベースに内容を入れるためのバッチを作る

askeet/batch/にload_data.phpを作る
内容はとりあえずコピペ。
これはパスを定義して読み込みなんぞやっているらしい。

  • YAMLファイルを読み込んで
  • Propelオブジェクトインスタンスを作って
  • データベース上のテーブルにデータを入れる

バッチを動かす。

php batch/load_data.php

http://askeet.localhost/を見るとデータが追加されている。

テンプレートを書き換える

askeetいわくテーブルタグは醜いから捨て去ってナイスなdivにしようぜと
書いてあるので指示に従う。

  • truncate_text($question->getBody(), 200)
    • 本文から200文字だけ表示

で、保存するとナイスなデザインに。

余計なモノを消す

propel-generate-crudは余計なモノまで作るので余計なモノは削除する。