Dec 17
逆引きrhaco61: DBの姓、名カラムの入力フォームを一列にまとめる
逆引き21ではDBの姓、名カラムのデータを合わせて出力する方法でしたが、今度は入力フォームを一列にまとめる方法です。
- rhacoのresources/templates/generic/views/form.htmlのような書き方はしないで自分で組む
これが一番簡単です。
form.html
....
<tr><td>氏名</td><td>姓: <input type="text" name="sei" value="{$obj.getSei()}" />
名: <input type="text" name="mei" value="{$obj.getMei()}" /></td></tr>
適当に作りましたがこんな感じです。
確かにこうすれば好きなように作れますが折角rhacoにはループを使ってうまくフォームを表示できる仕組みがありますので、それを使ってみます。
- モデルのtoStringを使う
rhacoのresources/templates/generic/views/form.htmlのような書き方は柔軟に構成できるので非常に便利です。その場合はモデルのtoStringメソッドを上手く使うことで上のようなフォームを再現します。逆引き21のような構成を考えます。extraとしてsimeiがあるのでMember.phpにtoStringSimeiメソッドを追加します
Member.php
function toStringSimei(&$db){
$viewsUtil = new ViewsUtil($db);
return $this->label($this->columnSei()).':'.$viewsUtil->columnString($this,$this->columnSei(),true,true).' '.$this->label($this->columnMei()).':'.$viewsUtil->columnString($this,$this->columnMei(),true,true);
}
これでsimeiという一つのフォーム要素でなく、sei、meiという二つのフォーム要素としてフォームを表示することが出来ます。
この方法を使えば日付データを年、月、日の3つのフォームに分割するとか自由に出来るようになります。便利ですね~