2011/03/28

symfonyで掲示板作成、criteria

php講習 3/28

天気が良いので外は気持ちいい。
しかし、花粉が心配。

1時間目
・先週の復習
  criteria
・symfony、「モデルによるCRUD」から
  Webアプリでは、DB操作で下記4つの機能で実現できます。
  Create
  Read
  Update
  Delete

・モデルでの書き方
memberの場合、IDとcreated_atは記述しない。モデルで自動的にセットする。
・action.class.phpで記述をして、アクセスし、データがinsertされることを確認する。
・commentテーブルでも同様の記述を行い、データがinsertされることを確認する。

2時間目
・insert,delete
・オブジェクトを使ってDBを操作、ORマッピング
Web開発の現場では、SQLは使わずORマッピングで開発しています。

・以上の使い方に慣れる
member_addモジュールを作成。
$ symfony init-module front member_add
insert,confirm,resultアクション作成。
inputSuccess.php
confirmSuccess.php
resultSuccess.php


3時間目
・午前の答え合わせ
class member_addActions extends sfActions
{
 public function executeInput()
 {
  return sfView::SUCCESS;
 }
 public function executeConfirm()
 {
  //  パラメータで受け取る
  $this->nickname  = $this->getRequestParameter('nickname') ;
  $this->mailaddress  = $this->getRequestParameter('mailaddress') ;
  return sfView::SUCCESS;
 }
 public function executeResult()
 {
  //  パラメータで受け取る
  $nickname  = $this->getRequestParameter('nickname') ;
  $mailaddress  = $this->getRequestParameter('mailaddress') ;
  // symfonyでモデルの書き方(CRUD:insert)
  // まず、空の行を作る
  $member = new Member();
  // データをセットする
  $member->setNickname($nickname) ;
  $member->setMailaddress($mailaddress);
  // 保存する
  $member->save();
  return sfView::SUCCESS;
 }
}
・今やっているところは、アプリケーション名、モジュール名(アクション名)の関係が
わかるようになって下さい。
・会員一覧ページを作る(app:member_list/index)
一覧表はfrontモジュールのincexアクションと同じことをやっているので参考にして下さい。
$ symfony init-module front member_list
・編集ボタンで編集できるようにする。(app:member_edit)
$ symfony init-module front member_edit
indexSuccess.php
・編集用アクションinput,confirm,resultを作成する。
inputSuccess.php
confirmSuccess.php
resultSuccess.php

4時間目
・答え合わせ

5時間目
・答え合わせ、member_list/indexSuccess.php

6時間目
・答え合わせ、member_edit/inputSuccess.php,confirmSuccess.php,resultSuccess.php
public function executeInput()
 {
  $id = $this->getRequestParameter('id') ;
  $this->member = MemberPeer::retrieveByPK($id) ;
  return sfView::SUCCESS;
 }

 public function executeConfirm()
 {
  $this->id          = $this->getRequestParameter('id') ;
  $this->nickname    = $this->getRequestParameter('nickname') ;
  $this->mailaddress = $this->getRequestParameter('mailaddress') ;
  return sfView::SUCCESS;
 }

 public function executeResult()
 {
  //  パラメータで受け取る
  $id          = $this->getRequestParameter('id') ;
  $nickname    = $this->getRequestParameter('nickname') ;
  $mailaddress = $this->getRequestParameter('mailaddress') ;
  // 更新したい行(オブジェクト)をまず取得する
  $member = MemberPeer::retrieveByPK($id) ;
  $member->setNickname($nickname) ;
  $member->setMailaddress($mailaddress);
  // 保存する
  $member->save();
  return sfView::SUCCESS;
 }

・一覧画面に削除リンクを付け、削除処理を追加する。
モジュールはmember_list
public function executeDelete()
 {
  // DBアクセス
  $id = $this->getRequestParameter('id') ;
  $member = MemberPeer::retrieveByPK($id) ;
  // データを削除する(一度削除するともうないので判断を入れる)
  if ($member) {
   $member->delete();
  }
  return sfView::SUCCESS;
 }

・明日はdeleteを解説
・今日やったところであやふやな部分がある人はモジュールをlinux上でリネームして
復習をして下さい。
(eclipseでリネームすると文字化けすることがあるのでlinux上でリネームする)

0 件のコメント:

コメントを投稿