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

时间:2018-01-19 11:48:48

标签: cakephp cakephp-2.0

我读过CakePHP multiple checkbox array HTML the right way但结果很奇怪。我有一个标签列表(来自名为Tag的模型)。我想在View中循环遍历这些并输出复选框。

所以我在控制器中获得了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; ?>

我从我链接到的帖子中复制了tag_id[]的语法。

但是当我检查标记时,它会产生以下内容作为每个name的{​​{1}}属性:

<input type="checkbox">

这应该不是

data[GroupTag][tag_id[]]

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

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

2 个答案:

答案 0 :(得分:1)

试试这个

http://localhost:8983/solr/admin/cores

答案 1 :(得分:-1)

你也可以这样做:

$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>