循环内的 CakePHP 2 输出复选框数组

CakePHP 2 output checkbox array inside loop

我读过 但得到了奇怪的结果。我有一个标签列表(来自一个名为 Tag 的模型)。我想遍历这些并在视图中为它们输出复选框。

所以我在我的控制器中获得了 Tag 数据:

$tags = $this->Tag->find('list', ['order' => ['name' => 'ASC']]);
$this->set('tags',$tags);

当我在视图中循环遍历它时,我试图输出 Bootstrap 标记之间的复选框:

<?php echo $this->Form->create('GroupTag'); ?>
<?php foreach ($tags as $tag_id => $tag): ?>
    <div class="checkbox">
        <label>
            <?php echo $this->Form->checkbox('tag_id[]', array( 'value'=> $tag_id)); ?>
            <?php echo $tag; ?>
        </label>
    </div>
<?php endforeach; ?>

我从我链接到的 post 复制了 tag_id[] 的语法。

但是当我检查标记时,它会为每个 <input type="checkbox"> 生成以下 name 属性:

data[GroupTag][tag_id[]]

这不应该吗

data[GroupTag][tag_id][]

?

我的想法是,我有多个带有 name 属性 tag_id[] 的复选框,然后在控制器中我可以遍历已选中的内容。

请有人就此提出建议,因为我无法使其正常工作,并且查看了 here/docs 上提供的示例。

试试这个

$this->Form->checkbox('tag_id.', array( 'value'=> $tag_id))

您也可以这样做:

$this->Form->input('GroupTag.tag_id', [
    'type' => 'select',
    'multiple' => 'checkbox',
    'options' => $tag_id
]);

FormHelper::select(string $fieldName, array $options, array $attributes)

示例:

$options = array(
    'Value 1' => 'Label 1',
    'Value 2' => 'Label 2'
);

echo $this->Form->select('Model.field', $options, array(
    'multiple' => 'checkbox'
));

输出:

<div class="input select">
   <label for="ModelField">Field</label>
   <input name="data[Model][field]" value="" id="ModelField"
    type="hidden">
   <div class="checkbox">
      <input name="data[Model][field][]" value="Value 1"
        id="ModelField1" type="checkbox">
      <label for="ModelField1">Label 1</label>
   </div>
   <div class="checkbox">
      <input name="data[Model][field][]" value="Value 2"
        id="ModelField2" type="checkbox">
      <label for="ModelField2">Label 2</label>
   </div>
</div>