前回は,rhaco アプリケーションの基本となるFlowの仕組みについて解説しました。今回は,アプリケーションに頻出する一連の動作をライブラリが実現する Views(汎用ビュー)という機能について解説していきます。
Viewsについて
ウェブアプリケーションの開発において,データの登録・一覧・変更・削除(CRUD)といった動作は,ある程度共通化できることが多いです。そのため,(特に)Ruby on Rails以降のフレームワークでは scaffolding と呼ばれる,アプリケーションの土台をジェネレートする機能が備わっていることもよくあります。
rhacoでは,これらの動作をひな形のようにしてライブラリで実現しています。簡単に言うと「どのモデルを用いて,どの動作するのか」を明示しさえすれば,CRUDを実現できるようになります。
これまで何度か使用しているセットアップアプリケーション(setup.php)のDB管理機能もこのViewsを用いて実現されています。
Viewsの持つ機能
Viewsを使うと,データベースに対して次のような機能が1つのメソッドで実現できるようになります。
- 作成(確認画面あり/なし)
- 更新(確認画面あり/なし)
- 削除
- 一覧(ページャ付き)
一覧機能の実装
さて,それでは前回 Flowを用いて実装した一覧画面を,Viewsを使ったものに書き換えてみましょう。
Views で一覧画面を実装するには,Views::read メソッドを使います。
views.php
<?php
require './__init__.php';
Rhaco::import('generic.Views');
Rhaco::import('model.Todo');
$views = new Views();
$views->read(new Todo());
$views->write('list.html');
テンプレートは前回作成したものを表示しています。
どうでしょう,幾分か簡単に書けるようになりましたね。リストだけではそれほど恩恵がわかりにくいかと思いますので,次はTodoを追加する機能を実装していきましょう。
データの登録処理
先に述べたように,Viewsを使うとCRUDがメソッド一つで実現できます。
まずは,データの登録の機能を作ってみます。データの登録は Views::create メソッドを使います。
views_create.php
<?php
require './__init__.php';
Rhaco::import('generic.Views');
Rhaco::import('model.Todo');
$views = new Views();
$views->create(new Todo(), Rhaco::url())->write();
これだけで,データの登録機能については実装完了です。createの第二引数にはViewsへfilterを与えることができますが,ここでの説明は割愛します。デフォルトでは,データの作成後にリダイレクトする先のURLを与えることができるようになっています。
早速, http://localhost/kaeru/views_create.php にアクセスしてみると,簡単なフォームが表示されます。
これは,rhacoが持っている簡易的なフォームを仮に使用することで,テンプレートを作成することなくフォームを実現できます。全体のデザインが決まっていない場合など,一時的なテストに使うのに便利です。

