symfony askeet Day 4
- showSuccess.phpを書き換える
- テストデータの追加
- モデルを弄る
- 同じことは繰り返さない
- モデルを弄る その2
- はまったのでやりなおした。
- 回答部分にも同じことをする
showSuccess.phpを書き換える
テストデータの追加
Day 3で設置したload_data.phpを使ってコメントデータをDBに流します。
内容はコメントのデータのようです。
モデルを弄る その1
名前を呼び出すことが多いのでフルネームを呼び出せるようにしようとあるので
姓+名を出す関数をaskeet/lib/model/User.phpに追加します。
getUser()だけでフルネームが呼び出せるようになりました。
同じことは繰り返さない
listSuccess.phpとshowSuccess.phpには共通点があって、それはこの部分。
<div class="interested_mark" id="mark_<?php echo $question->getId() ?>"> <?php echo count($question->getInterests()) ?> </div>
この部分をフラグメントにしますとあるので同階層に_interested_user.phpというファイルを作ります。
_interested_user.phpをlistSuccess.phpやshowSuccess.phpで呼び出すには
include_partialと書いてあります。
include_partial('<パーシャル名>',
http://codezine.jp/article/detail/1063?p=2
array(<パーシャル内で必要となる変数の配列>))
<?php include_partial('interested_user', array('question' => $question)) ?>
ファイル名の最初に_が付いているのにパーシャル名には_が付いていないのかは
本家:Chapter 7 - Inside The View Layer (1_0) - Symfony
翻訳:http://symfony.xrea.jp/1.0/book/07-Inside-the-View-Layer.html#partials
を読んでくださいとあったので読むと
テンプレートと区別するためにパーシャル(コードの断片)のファイルには_を付けろとあります。
モデルを弄る その2
まず、DBのテーブルにinterested_usersという行を追加する。
最後にさっきのパーシャル(_interested_user.php)を書き換えて終了。
…と、まあ途中までは上手くいってるなーとか思っていたらはまったわけです。
いろいろ悩んで考えて調べまくっていても分からなかったので
id:TamaCさんに質問しに行きました。
答えはscheme.ymlにありました。
このaskeetはDB内のテーブル名と自動生成するモデル名を分けたいらしく
別名指定をしなければならないようです。
ask_question: _attributes: idMethod: native phpName: Question
phpName:というもので指定すると別名指定できるようです。
これが指定されないと生成されるモデル名がAskQuestion〜〜みたいになってしまいます。
Questionを呼び出したいのにも関わらずQuestionが無ければエラーが出る。
そういうことみたいです。
ここまで書いてきて何ですが、いろいろやっていたら訳が分からなくなり
一度やり直しました。><
これで分かったことがあります。
先ほどはまったのはscheme.ymlのせいだったりもしたので
YAML大事ということがよくわかりました。
ということで、リカバーできたので続きに行きたいと思います。
回答部分にも同じことをする
だんだんaskeetの説明文がえらいこと適当になってきたなぁと思いつつ
復旧で全力を尽くしたので今日はここらへんでお開き。
明日はルーティングからがんばります。