循环内的 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>
我读过 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>