PHPフォームでチェックボックスとラジオボタンを作成する簡単な方法を試しました。唯一のことは、Codeigniter MVC フレームワークを使用していることです。
以下は、共通モデルまたは任意のヘルパー ファイルに挿入できる関数定義です。
function createOptions($fieldName, $labelsArray=array(), $selectedOption, $fieldType,$valuesArray = array()) {
$returnString = '';
if(count($valuesArray)!=count($labelsArray))
$valuesArray=$lebelsArray;
if ($fieldType === 'checkbox') {
for ($i=0;$i<count($labelsArray);$i++) {
$returnString.='   <input type="checkbox" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
if(in_array($valuesArray[$i], $selectedOption)){
$returnString.=' checked="checked" ';
}
$returnString.=' />  <label>'.$labelsArray[$i].'</label>';
}
}
if ($fieldType === 'radio') {
for ($i=0;$i<count($labelsArray);$i++) {
$returnString.='  <input type="radio" name=' . $fieldName.' value='.$valuesArray[$i].' id='.$valuesArray[$i];
if($valuesArray[$i]== $selectedOption)
$returnString.=' checked="checked" ';
$returnString.=' /><label>'.$labelsArray[$i].'</label>';
}
}
return $returnString;
}
そして、ビューファイルでこの関数を次のように呼び出す必要があります。
<?php
echo $this->common_model->createOptions('userHobbies[]', $hobbyOptions, $userHobbies, 'checkbox'); ?>
最初のパラメーターは、チェックボックス フィールドまたはラジオ フィールドの名前で、両方の場合のすべてのオプションで常に同じになります。2 番目はラベル配列、3 番目は選択されたオプションで、フォームのロード中にそれらのオプションがチェックされていることを示します。4 番目は、'checkbox' または 'radio' などの文字列になるフィールドのタイプです。5 番目は値の配列で、存在する場合、ラベルの値と同じ順序でラベルの値が含まれます。存在しない場合、ラベル配列は値配列として扱われます。このコードでさらに最適化が可能かどうか知りたいですか?