CakePHP多个复选框数组HTML正确的方式

时间:2015-07-05 19:42:56

标签: php cakephp checkbox

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) ); ?>

1 个答案:

答案 0 :(得分: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,您应该能够轻松地看到它如何构建字段名称。