手書きからコード自動生成へ - Scaffold(Controller)編
さて、自動コード生成の集大成?
scaffold (スキャフォールド:足場)にたどり着きました。
ウェブアプリというか、データベース操作の基本的な機能CRUDを一発で実現するためのコードを自動生成してくれます。
基本的には、modelの時と同じです。
コード生成したあと、データベース操作のために oil refine migrate します。
$ oil generate scaffold testscaffold title:text memo:text Creating migration: /home/kima/test_app/fuel/app/migrations/003_create_testscaffolds.php Creating model: /home/kima/test_app/fuel/app/classes/model/testscaffold.php Creating controller: /home/kima/test_app/fuel/app/classes/controller/testscaffold.php Creating view: /home/kima/test_app/fuel/app/views/testscaffold/index.php Creating view: /home/kima/test_app/fuel/app/views/testscaffold/view.php Creating view: /home/kima/test_app/fuel/app/views/testscaffold/create.php Creating view: /home/kima/test_app/fuel/app/views/testscaffold/edit.php Creating view: /home/kima/test_app/fuel/app/views/testscaffold/_form.php $ oil refine migrate
scaffoldで、生成されたのは、
マイグレーション、モデル、コントローラー:1
ビュー:5
まず、コントローラーから解析していきます。
生成されたメソッドをgrepで抽出すると、5つありました。
/controller$ cat testscaffold.php | grep function public function action_index() ← レコード一覧表示 public function action_view($id = null) ← レコードの個別表示 public function action_create() ← レコード挿入 public function action_edit($id = null) ← レコード編集 public function action_delete($id = null) ← レコード削除
内容は、いままでの学習の過程で出てきたものがほとんどなので、
だいたい理解できますが、
新登場のものを中心に、内容を解析していきます。
action_index()
(機能) レコード一覧表示
(新登場なし)
action_view($id = null)
(機能)レコードの個別表示
- Response::Redirect(’testscaffold’);
相対URLを指定して、(この場合、/controller/testsaffold.php へ) リダイレクトする。
セッション変数 error に値を設定する。
action_create()
(機能)レコード挿入
- Input::method() == ‘POST’
見た感じそのまま。HTTPのメソッドを取得し比較してます。
Inputクラスを使うと、HTTPの情報を取得することができます。
- Model_Testscaffold::validate(‘create’);
(モデルのトコロで説明予定:要は、入力値の検査をしてます。)
action_edit($id = null)
(機能)レコード編集
(新登場なし)
action_delete($id = null)
(機能)レコード削除
deleteメソッド
(モデルのトコロで説明予定:要は、レコードを削除してます。)