今日はPHPのフレームワークCodeIgniterのForm_validationについてです。第51
回の続きになります。
第51回の時はフォームから入力した値を取得する方法について書きましたが、今
回は確認画面のほうを書きます。
ほとんど51回と同じようなソースですが、確認画面にあたるconfirm()メソッド
と選択した項目を表示するためのメソッドも追加しています。
入力フォーム用のビューは51回と同じですが、一応書いておきます。
1.controller/form.php(フォーム用コントローラ)
(form.php)
<?php
class Form extends Controller{
// 入力
function input()
{
// URLヘルパの読み込み
$this->load->helper('url');
// フォームバリデーションの読み込み
$this->load->library('form_validation');
// ビューを呼び出す
$this->load->view('form_input_view');
}
// 確認
function confirm()
{
// URLヘルパの読み込み
$this->load->helper('url');
// フォームバリデーションの読み込み
$this->load->library('form_validation');
// バリデーションの設定
$this->form_validation->set_rules('your_name', 'お名前',
'required|xss_clean');
$this->form_validation->set_rules('pc_user_menu', 'PC利用暦',
'required|xss_clean');
$this->form_validation->set_rules('gender', '性別', 'required|xss_clean');
$this->form_validation->set_rules('os[]', '使用OS', 'xss_clean');
// バリデーションの実行
if ($this->form_validation->run() !== FALSE)
{
// 成功した場合は確認画面ビューを表示
$view_name = "form_confirm_view";
// OSテキスト表示用
$os_text = "";
$your_name = set_value('your_name');
$pc_user_menu = set_value('pc_user_menu');
$gender = set_value('gender');
$os_list = set_value('os[]');
// 選択したOSリストの表示
if($os_list)
{
foreach($os_list as $key => $value)
{
$os_text .= $this->_get_os_name($value). ",";
}
}
// ビューに表示する値を設定
$data['your_name'] = $your_name;
$data['gender_name'] = $this->_get_gender_name($gender);
$data['pc_user'] = $this->_get_pc_user($pc_user_menu);
$data['os_text'] = $os_text;
$data['gender'] = $gender;
$data['pc_user_menu'] = $pc_user_menu;
$data['os_list'] = $os_list;
// ビューの表示
$this->load->view('form_confirm_view', $data);
}
else
{
// 失敗した場合は入力画面ビューに戻る
$this->load->view('form_input_view');
}
}
// PCユーザ名を取得
function _get_pc_user($num)
{
$pc_user_data = array("","1年未満","1年から2年","2年以上");
$pc_user = $pc_user_data[$num];
return $pc_user;
}
// 性別を取得
function _get_gender_name($gender)
{
$str = "";
if(strcmp($gender, "men") == 0)
{
$str = "男性";
}
elseif(strcmp($gender, "woman") == 0)
{
$str = "女性";
}
return $str;
}
// OS情報を取得
function _get_os_list()
{
$os_list[1] = "Windows95";
$os_list[2] = "Windows98";
$os_list[3] = "WindowsNT";
$os_list[4] = "Windows2000";
$os_list[5] = "WindowsXP";
$os_list[6] = "WindowsVista";
$os_list[7] = "Windows 7";
$os_list[8] = "Mac OS 9";
$os_list[9] = "Mac OS X";
$os_list[10] = "Linux";
$os_list[11] = "Solaris";
return $os_list;
}
// OSの名前を取得する
function _get_os_name($num)
{
$os_name = "";
$os_list = $this->_get_os_list();
$os_name = $os_list[$num];
return $os_name;
}
}
2.view/form_input_view.php(入力画面用ビュー)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=" />
<title>サンプルです</title>
</head>
<body>
<form action="<?= site_url("form/confirm"); ?>" method="post">
★お名前(必須)<?php echo form_error('your_name'); ?>
<input type="text" name="your_name" value="<?php echo set_value('name');
?>" /><br />
★パソコンの利用暦を選んでください。<?php echo form_error('pc_user_menu'); ?>
<select name="pc_user_menu">
<option value="0" <?php echo set_select('pc_user_menu', '0', TRUE);?>>▼
選択してください
<option value="1" <?php echo set_select('pc_user_menu', '1');?>>1年未満
</option>
<option value="2" <?php echo set_select('pc_user_menu', '2');?>>1年から2
年</option>
<option value="3" <?php echo set_select('pc_user_menu', '3');?>>2年以上
</option>
</select>
<br />
★性別を選んでください。(必須)<?php echo form_error('gender'); ?>
<input type="radio" name="gender" value="man" <?php echo
set_radio('gender', 'man');?> />男性
<input type="radio" name="gender" value="woman" <?php echo
set_radio('gender', 'woman');?> />女性
<br />
★使用しているOSをすべて選択してください。(複数選択可)<br />
<input type="checkbox" name="os[]" value="1" <?php echo
set_checkbox('os[]', '1'); ?> />Windows95<br />
<input type="checkbox" name="os[]" value="2" <?php echo
set_checkbox('os[]', '2'); ?> />Windows98<br />
<input type="checkbox" name="os[]" value="3" <?php echo
set_checkbox('os[]', '3'); ?> />WindowsNT<br />
<input type="checkbox" name="os[]" value="4" <?php echo
set_checkbox('os[]', '4'); ?> />Windows2000<br />
<input type="checkbox" name="os[]" value="5" <?php echo
set_checkbox('os[]', '5'); ?> />WindowsXP<br />
<input type="checkbox" name="os[]" value="6" <?php echo
set_checkbox('os[]', '6'); ?> />WindowsVista<br />
<input type="checkbox" name="os[]" value="7" <?php echo
set_checkbox('os[]', '7'); ?> />Windows 7<br />
<input type="checkbox" name="os[]" value="8" <?php echo
set_checkbox('os[]', '8'); ?> />Mac OS 9<br />
<input type="checkbox" name="os[]" value="9" <?php echo
set_checkbox('os[]', '9'); ?> />Mac OS X<br />
<input type="checkbox" name="os[]" value="10" <?php echo
set_checkbox('os[]', '10'); ?> />Linux<br />
<input type="checkbox" name="os[]" value="11" <?php echo
set_checkbox('os[]', '11'); ?> />Solaris<br />
<input type="submit" name="send" value="送信" />
</form>
</body>
3.views/form_confirm_view.php(確認画面用ビュー)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=" />
<title>確認画面です。</title>
</head>
<body>
<form action="<?= site_url("form/confirm"); ?>" method="post">
★お名前(必須)<br />
<?= $your_name ?><br />
★パソコンの利用暦を選んでください。<br />
<?= $pc_user ?><br />
★性別を選んでください。(必須)<br />
<?= $gender_name ?><br />
★使用しているOSをすべて選択してください。(複数選択可)<br />
<?= $os_text ?><br />
<br />
<form action="#" method="post">
<input type="hidden" name="your_name" value="<?= $your_name ?>" />
<input type="hidden" name="pc_user_menu" value="<?= $pc_user_menu ?>" />
<input type="hidden" name="gender" value="<?= $gender ?>" />
<?php if($os_list): ?>
<?php foreach($os_list as $value): ?>
<input type="hidden" name="os[]" value="<?= $value ?>" />
<?php endforeach; ?>
<?php endif; ?>
<input type="submit" name="send" value="送信" />
</form>
</body>
サンプルを実行すると、全部入力すると確認画面と入力した内容が表示されます。
今回のポイントはform.phpのテキスト表示用に使っている以下の部分です。
// バリデーションの実行
if ($this->form_validation->run() !== FALSE)
{
// 成功した場合は確認画面ビューを表示
$view_name = "form_confirm_view";
// OSテキスト表示用
$os_text = "";
$your_name = set_value('your_name');
$pc_user_menu = set_value('pc_user_menu');
$gender = set_value('gender');
$os_list = set_value('os[]');
入力した値は$this->form_validation->run()を実行したあと、
set_valueで取得します。
$this->form_validation->run()を実行する前にset_valueで値を取ることができ
ないので注意が必要です。
set_valueは入力した項目だけでなく、ラジオボタン、セレクトボックス、
チェックボックスの選択項目も取得することができます。
複数選択のチェックボックスの場合は、os_listに配列で値が入ってきます。
この配列からforeach文を利用して、選択された項目をテキストにして表示して
います。
また、確認画面のビューのほうでもforeach文を使って選択内容に応じてhidden
項目も設定できるようにしています。
<?php foreach($os_list as $value): ?>
<input type="hidden" name="os[]" value="<?= $value ?>" />
<?php endforeach; ?>
form_validation機能は入力内容の判定だけでなく、その後のPOST値の取得も簡
単にできてしまうので、とても便利です。
CodeIgniterのForm_validation機能使ってみてください。
おしま~い。














コメントする