我試過一種簡單的方法來創建複選框以及任何php形式的單選按鈕。唯一的事情是我正在使用Codeigniter MVC框架。有沒有更好的方法來創建複選框和單選按鈕在PHP形式?
這裏是你可以插入你的共同模型或任何幫助文件的函數定義。
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'); ?>
第一個參數是複選框字段或無線電場,這始終會是相同的,對於兩種情況的所有選項的名稱。第二個是標籤數組,第三個是選擇的選項,它會在加載表單時顯示這些選項。第四種是字段類型,它是一個字符串,如'checkbox'或'radio'。第五個是values數組,如果存在的話,它將包含與標籤相同順序的標籤值。如果不存在,標籤數組將被視爲值數組。 我想知道這個代碼中是否有進一步的優化可能?
感謝您的儘量減少代碼。 –
是的,實際上,我創建了一個表單,用於獲取包括用戶愛好作爲複選框字段和用戶性別作爲無線電字段的用戶信息。所以我發現這種方式更好地動態創建這些字段。你的代碼也更好。 –
Castis,對不起,但我無法得到你所談論的編碼標準,我正在使用netbeans編輯器的「格式化」工具(Alt + Shift + F)。 –