2015-07-05 32 views
2

CakePHP的爲複選框的形式發生器......路過的時候到下列名稱:CakePHP的多選框陣列HTML正道

<?php echo $this->Form->checkbox('checkList[]', array('value'=>1,'id' => 'holiday'.$holidaysDays['id'], 'error' => false, 'placeholder' => false,'div'=>false,'label'=>false,'class' => 'approveHolidayCheckbox', 'data-off-text'=>'No', 'data-on-text' =>'Yes', 'hiddenField'=>true)); ?> 

輸出:

<input type="checkbox" name="data[HolidaysApproval][checkList[]]" value="1" id="holiday238" class="approveHolidayCheckbox" data-off-text="No" data-on-text="Yes"> 

我在這裏讀到:http://network-13.com/thread/3647-Creating-checkbox-arrays-with-CakePHP的解決方案是在字段名稱上添加句號(如下所示),在頁面上輸出多個複選框。這是做到這一點的「正確」方式嗎?

無法在文檔中的任何位置看到此特定場景。

<?php echo $this->Form->checkbox('checkList.', array('value'=>1,'id' => 'holiday'.$holidaysDays['id'], 'error' => false, 'placeholder' => false,'div'=>false,'label'=>false,'class' => 'approveHolidayCheckbox', 'data-off-text'=>'No', 'data-on-text' =>'Yes', 'hiddenField'=>true)); ?> 
+0

如果你循環了幾個複選框,那麼是的,最後的最終結果會產生類似於'checklist [0]','checklist [1]'等的東西。 – Skatch

回答

3

是的,這是做這件事的正確方法。當CakePHP構建字段名稱時,它使用PHP的explode()方法。所以checklist.主要執行以下操作: -

$fieldname = explode('.', 'checklist.'); 

導致: -

Array 
(
    [0] => checkList 
    [1] => 
) 

所以你會得到輸入的名稱data[Model][checklist][]

您可以類似地使用這個爲hasMany像字段,例如,$this->Form->field('Model..name');這將給你輸入名稱data[Model][][name]

看看FormHelper,你應該很容易就能看到它是如何構建字段名稱的。