スキャフォールディング(足場組み)
■Giiのインストール
blog/protected/config/main.php 20行目付近を編集
'modules'=>array( // ↓↓↓コメントアウトする↓↓↓ 'gii'=>array( 'class'=>'system.gii.GiiModule', 'password'=>'パスワードを設定', // If removed, Gii defaults to localhost only. Edit carefully to taste. 'ipFilters'=>array('127.0.0.1','::1'), //'ipFilters'=>array('*'), ), ),
■モデルの生成
http://localhost/blog/index.php?r=gii/にアクセスしてパスワードを入力する。
『Model Generator』のリンクをクリックして下記モデルを生成する。
tbl_comment
tbl_lookup
tbl_post
tbl_tag
tbl_user
モデル生成後にファイルが追加される
『/models/User.php』は"CActiveRecord"を継承する『User』クラスを含む。このクラスは『tbl_user』テーブルにアクセスするのに利用される。 『/models/Post.php』は"CActiveRecord"を継承する『Post』クラスを含む。このクラスは『tbl_post』テーブルにアクセスするのに利用される。 『/models/Tag.php』は"CActiveRecord"を継承する『Tag』クラスを含む。このクラスは『tbl_tag』テーブルにアクセスするのに利用される。 『/models/Comment.php』は"CActiveRecord"を継承する『Comment』クラスを含む。このクラスは『tbl_comment』テーブルにアクセスするのに利用される。 『/models/Lookup.php』は"CActiveRecord"を継承する『Lookup』クラスを含む。このクラスは『tbl_lookup』テーブルにアクセスするのに利用される。
■CRUD操作の実装
『Crud Generator』のリンクをクリックして下記のコントローラーを生成する
Post
Comment
コントローラーファイルが追加される
『/controllers/PostController.php』は"PostController"クラスを含む。このコントローラーは記事のCRUD操作を受け持つ。 『/controllers/CommentController.php』は"CommentController"クラスを含む。このコントローラはコメントのCRUD操作を受け持つ。
ビューフォルダが追加される
『/views/post/create.php』は新しい記事を作成するHTMLフォームを表示するビューファイル。 『/views/post/update.php』は記事を更新するHTMLフォームを表示するビューファイル。 『/views/post/view.php』は記事の詳細情報を表示するビューファイル。 『/views/post/index.php』は記事の一覧を表示するビューファイル。 『/views/post/admin.php』は管理コマンドと一緒に表形式で記事を表示するビューファイル。 『/views/post/_form.php』は部分ビューファイルであり『/views/post/create.php』と『views/post/update.php』に埋め込まれる。 これは記事情報を入力するHTMLフォームを表示する 『/views/post/_view.php』は部分ビューファイルであり『/views/post/index.php』で単一の記事の簡単なビューを表示する。 『/views/post/_search.php』は部分ビューファイルであり、『/views/post/admin.php』で検索フォームを表示する。 同様に上記一式がコメント用にも生成される。
■記事一覧画面
http://localhost/blog/index.php?r=post
■コメント一覧画面
http://localhost/blog/index.php?r=comment
■処理の流れ
1.ユーザがURL http://ドメイン/blog/index.php?r=post をリクエスト。 2.ウェブサーバにより、エントリスクリプトが実行され、リクエストを処理するためにアプリケーションインスタンスが作成され初期化される。 3.アプリケーションはPostControllerのインスタンスを作成し、実行する。 4.PostControllerインスタンスは要求されたindexアクションをactionIndex()メソッドを呼ぶことで実行する。 5.actionIndex()メソッドはデータベースに問合せを行い、最近の記事のリストを取り出す。 6.actionIndex()メソッドは、記事データをindexビューで描画する。
参考サイト:
http://www.yiiframework.com/doc/blog/1.1/ja/prototype.scaffold