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) ); ?>
输出:
<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) ); ?>
是的,这是正确的方法。当CakePHP构建字段名称时,它使用PHP的explode()
方法。因此checklist.
本质上执行以下操作:-
$fieldname = explode('.', 'checklist.');
结果是:-
Array
(
[0] => checkList
[1] =>
)
因此,您将获得名称为data[Model][checklist][]
的输入。
类似地,您可以将其用于类似hasMany
的字段,,例如$this->Form->field('Model..name');
,它将为您提供名称为data[Model][][name]
的输入。
看看FormHelper,您应该能够很容易地看到它是如何构建字段名的。