Categories: PHP

【PHP】QuickformでDateの必須チェックをする

Formを自動生成するHTML_Quickform
ルールとかも簡単に設定できるんですけど、日付の必須チェックが標準では備わってないので、
必須にする方法のメモ。
詳細は↓へ

quickformのDATEを必須にする方法

たとえば生年月日を生成してみる。

$form = new HTML_QuickForm('formName', 'post');
$option = array(
'emptyOptionText' => '-',
'addEmptyOption' => true,
'format' => 'Y 年 m 月 d 日',
'minYear' => date('Y') + 10,
'maxYear' => date('Y') - 100
);
$form->addElement('date', 'date', '生年月日', $option);
// 必須ルールの登録
$form->registerRule('daterequired', 'callback', 'isPostDate', get_class());
$form->addRule('birthday', '生年月日を選択してください。', 'daterequired');

optionで空の値を入れていることに注目です。
あとで空かどうかをチェックします。
ということで肝心のチェックする関数は以下の感じ

/**
* QuickFormでdateの生成は空値でPOSTされてもrequiredチェックしないので無理やり値をチェックする
*
* @param array $birthday
*
* @return void
*/public function isPostDate(array $birthday)
{
foreach ($birthday as $key => $val) {
if (empty($val)) {
return false;
}
}
return true;
}

これで何も日付が選択されていない場合は必須チェックの時のようにエラーが出るようになります。
めでたしめでたし。

mogmet

View Comments

Share
Published by
mogmet