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

Akelosをいじってみるメモ帳

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

2008年06月11日

Akelos Blogチュートリアル 18.コメント機能を追加する 動作確認

さぁ動作を確認しましょう。
http://localhost/blog/ の記事一覧から、Showボタンを押すと、下にコメントフォームが追加されているはずです。
書き込むとコメントが増えるでしょうか?増えたら成功です。


蛇足の追記 ※Extraなチュートリアルです

ただし、これにはvalidateが入ってないですね。
でも単にvalidate足しただけでは、Postに足したようにはいきません。Commentはビューのテンプレートを持っていないので、モデルにvalidateをいれても、結果を直接表示は出来ません。
コメントをテンプレートを持つ形式にする事も考えられますが、ここでは、flashメッセージを使います。

C:\xampp\htdocs\projects\blog\app\models\comment.php
-------------------------------------------------------
<?php

class Comment extends ActiveRecord
{
  var $belongs_to = 'post';
  
  function validate()
  {
    $this->validatesPresenceOf('body');
  }
  
}

?>
-------------------------------------------------------
まぁ、本当はもっとチェックを入れないとあかんけど、とりあえず。

続いてコントローラ
C:\xampp\htdocs\projects\blog\app\controllers\blog_controller.php
の最後の方、function comment()の中を書き換えます。
-------------------------------------------------------
    function comment()
    {
    //対象となるid情報は来ているかどうか確認
    if(!empty($this->params['id'])){
      //元記事を探して
      $Post = $this->Post->find($this->params['id']);

      if ($this->Request->isPost() &&  //Postデータで来ているか確認
         $Post->comment->create($this->params['comment']) && //作って
         $Post->save() ){  //セーブしてみる
        //validateでエラーが起きているとfalseが帰ってくる
        //validateがokならば、trueが帰ってくる

        //成功したから表示
        $this->flash['notice'] = $this->t('Your comment was successfully added');
        
      }else{  //エラーだと表示させるよ!
        $this->flash['notice'] = $this->t('Your comment error!');
      }
      //書き込み画面に移動
      $this->redirectTo(array('action'=>'show','id'=>$Post->id));
    }else{
      //一覧画面に移動
      $this->redirectToAction('listing');
    }
    }
-------------------------------------------------------
こんな感じ。

コントローラ内で、flashに上のように文字つっこんで、redirectToでページを再読込させると、flashに入れた内容が画面の上部に表示されます。

これで一通り動きます。

次回ユーザ認証・・・
posted by AMUAMU at 23:15| Comment(2) | TrackBack(0) | チュートリアル | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
これはありがたいチュートリアルです。作成ありがとうございます。

>>書き込むとコメントが増えるでしょうか?増えたら成功です。

とありますが、この時点で、comment()メソッド作ってましたっけ?

あと、最初にsetupスクリプトを使った後に、各ディレクトリのパーミッション変更が必要のようですね。
Posted by catt at 2008年10月08日 01:29
cattさん、コメントありがとうございます。

>とありますが、この時点で、comment()メソッド作ってましたっけ?

むむむ・・・・
確かに流れを見るとおかしい。
ちょっと確認します。
ご指摘ありがとうございます!

>あと、最初にsetupスクリプトを使った後に、各ディレクトリのパーミッション変更が必要のようですね。

これはLinuxの環境においてですかね?
手元のXAMP for Win環境だと問題が無い・・・

前述の件もあわせて、Linux環境で確認してみますーーー
Posted by AMUAMU at 2008年10月08日 02:51
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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

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