3日目をやってみてどうもバージョンの違いのためかチュートリアルに書かれている内容と実際にいじっているコードで違いが結構あるのに気がついた。そこで今回から違う点についても少し書いておきます。(askeet の symfony のバージョンは 1.0 、実際にいじっている symfony のバージョンは 1.1 です。)

MVC モデル

MVC の各ファイルの場所
モデル
askeet/lib/model/
ビュー
askeet/apps/frontend/modules/question/templates/
コントローラ
askeet/apps/frontend/modules/question/actions/

レイアウトの変更

askeet/apps/frontend/templates/layout.php がアプリのレイアウトになる。このファイルをチュートリアルに書かれているコードに修正する。
また、CSS(main.css, layout.css) を チュートリアルの SVN レポジトリからダウンロードして askeet/web/css に入れる。

追加した CSS をレイアウトで読み込むようにビューの設定ファイルを修正
frontend/config/view.yml

stylesheets: [main, layout]

CSS を追加した画面です。

テストデータ

askeet/data/fixtures/test_data.yml を作成
チュートリアルにあるように batch プログラムを作るが askeet/apps/frontend/config/config.php がないとエラーになる。調べてたところ下記コマンドでテストデータを読み込めました。

symfony propel-load-data frontend

バージョンの違いによるものと思います。

テストデータ入れた後の画面です。

ビューの変更

チュートリアルで変更しているビューは listSuccess.php だが該当のファイルはない。askeet/apps/frontend/modules/question/templates/indexSuccess.php が該当のファイルになるようです。
ビューを下記コードに変更する。

<?php use_helper('Text') ?>

<h1>popular questions</h1> 

<?php foreach($questionList as $question): ?>
  <div class="question">
    <div class="interested_block">
      <div class="interested_mark" id="interested_in_<?php echo $question->getId() ?>">
        <?php echo count($question->getInterests()) ?>
      </div>
    </div>

    <h2><?php echo link_to($question->getTitle(), 'question/show?id='.$question->getId()) ?></h2>

    <div class="question_body">
      <?php echo truncate_text($question->getBody(), 200) ?>
    </div>
  </div>
<?php endforeach; ?>

また、コントローラからビューへ渡される変数名は $questions ではなく $questionList になります。(上記ソースは $questionList に変更してあります)

ここまでの画面です。

関連する投稿