PHPのRuby on Railsクローンのフレームワーク Akelos PHPをいじってみた出来事のメモ。

Akelosをいじってみるメモ帳

Akelos PHP Blogチュートリアル一覧(全18記事)
Akelos PHP ユーザ認証チュートリアル一覧(全19記事)

2008年06月11日

Akelos Blogチュートリアル 17.コメント機能を追加する 表示、反映の仕組みなど追加

関連付けしたコメントを表示する枠を作ります。
C:\xampp\htdocs\projects\blog\app\views\blog\show.tpl
を開いて、以下を末尾</div>の前に書き加えてください。
-------------------------------------------------------
  <h2>_{Comments}</h2>
  {loop post.comments}
    <hr/>
    <p>{comment.body}</p>
  {end}

  <hr />

  <h3>_{Add a comment}</h3>
  <%= form_tag :action => 'comment', :id => post.id %> <br />
  <%= text_area 'comment', 'body' %>
    <%= submit_tag 'Comment!' %>
  </form>
-------------------------------------------------------
前半は表示用、中段の<hr/>を挟んで後半は書き込み用です。
関連付けしていれば、こんな感じで表示出来るんだ、ぐらいの把握で今は良いと思います。

続いてコメントの表示と書き込みを反映させるための実際の動作を、コントローラで定義します。

C:\xampp\htdocs\projects\blog\app\controllers\blog_controller.php
を開きます。

まず最初にクラス内の最初の
-------------------------------------------------------
  var $models = 'post';
-------------------------------------------------------
となっているところを

-------------------------------------------------------
  var $models = 'post, comment';
-------------------------------------------------------
と書き換えます。これは、このコントローラで利用するモデルの宣言だと考えて良いかと思います。

続いて、読み出しの指定を書きます。show()アクションが書いてあるところを探してください。
下記のようになっているはずです。
-------------------------------------------------------
    function show()
    {
        $this->post = $this->Post->find(@$this->params['id']);
    }
-------------------------------------------------------
となっているところを

-------------------------------------------------------
    function show()
    {
        $this->post = $this->Post->find(@$this->params['id'],array('include'=>'comment'));
    }
-------------------------------------------------------
と書き換えてください。末尾のところがポイントです。何を取り込む(include)するかを指定します。

※蛇足
これ書かなくてもロード出来そうな気もするけど、わざとなのかな?
これを書くことにより、必要なときだけ子供がロードされるから、色々高速に動きそうだし、個人的にはむしろ好感。これを書けとチュートリアルでは書いて無くて原因探しにちょっと時間使ったけど・・・。
蛇足終了
posted by AMUAMU at 23:11| Comment(0) | TrackBack(0) | チュートリアル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/100217165

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。