CodeIgniter で編集画面をつくる

スポンサーリンク

CodeIgniter で編集画面,つまりデータベースに登録されているデータを編集する画面をつくる方法をメモしておく。

以前の記事と同様に,テンプレートパーサとして Smarty を使っている前提とする。

編集画面は,最初に表示するときはデータベースから取り出した値を初期値として表示するが,一回送信されて form_validation でエラーになった場合は,送信されたデータを初期値にしなければならない。

まず,編集画面のビューの form タグより前で次のようにして,Smarty に渡された出力変数を取得する。

<?php $vars = $this->smarty_parser->_tpl_vars; ?>

これに対して,コントローラから

$data = array(
	'namae' => $namae, 
	'question' => $question
);
$this->smarty_parser->parse('ci:<ビュー>.tpl', $data);

のようにして値を渡すことで,ビューの連想配列 $vars に値が入る。

そしていつもどおり form タグをオープンする。

<?php echo form_open('<送信先>'); ?>

次がミソである。input タグを次のようにし,初回は DB から取得した値を,form_validation エラーによる再表示時はフォームから送信された値を初期値にする。

<input type="text" name="namae" value="<?php echo set_value('namae', $vars['namae']); ?>" />

select の場合は次のようにする。

<select name="question">
	<option <?php echo set_select('question', 'はい', ($vars['question'] == 'はい')); ?>>はい</option>
	<option <?php echo set_select('question', 'いいえ', ($vars['question'] == 'いいえ')); ?>>いいえ</option>
</select>

コントローラや確認画面のビューは以前と同じようにすれば良い。

以上のテクニックで編集画面を実装できる。それにしても面倒なので,それ用のヘルパでも作ろうかな……。

コメント

  1. しんじ より:

    それ用のヘルパでも作ってくれ

タイトルとURLをコピーしました