[symfony] askeet 3日目
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]
テストデータ
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 に変更してあります)
関連する投稿
コメントをどうぞ
Additional comments powered by BackType