我正在使用cakephp的最后一个版本,我必须使用以下代码创建一个复选框列表。
echo $this->Form->input('regions', array(
'type' => 'select',
'hiddenField' => false,
'options' => $regions,
'multiple' => 'checkbox',
'div' => false
));
代码工作90%,我的意思是......列表已经创建但我仍然看到<div>
结果如下:
<div class="checkbox"><input type="checkbox" name="data[regions][]" value="1" id="Regions1" /><label for="Regions1">AAAA</label></div>
<div class="checkbox"><input type="checkbox" name="data[regions][]" value="2" id="Regions2" /><label for="Regions2">BBBB</label></div>
<div class="checkbox"><input type="checkbox" name="data[regions][]" value="3" id="Regions3" /><label for="Regions3">CCCC</label></div>
我需要的结果是:
<li>
<input type="checkbox" name="data[regions][]" value="1" id="Regions1" /><label for="Regions1">AAAA</label>
</li>
...
我该怎么做?
答案 0 :(得分:1)
应该有一种更简单的方法,但你总是可以用传统方式做到这一点:)
while (list($key, $value) = each($regions)){
echo '<li>'.
$this->Form->input($value,
array(
'type' => 'checkbox',
'name' => 'data[regions][]',
'div' => false,
'value' => $key,
'label' => false,
'after' => $this->Form->label($value, $value)
))
.'</li>';
}
不是那么漂亮,但有效:)
答案 1 :(得分:1)
通过设置'div' => false
,您可以阻止创建&lt; div&gt;围绕整个输入部分(即复选框)。但显然你想禁用选项周围的div。不幸的是,我还没有找到一种方法来禁用Cake。
但是,您可以模拟&lt; li&gt;带有一些CSS技巧的项目。使用特殊类将输入封装在div中(与您现在正在执行的操作相反),然后使用CSS强制使用&lt; li&gt;造型:
在你的CSS中:
.box2li div
{
display: list-item;
}
在蛋糕视图中:
echo $this->Form->input('regions', array(
'type' => 'select',
'hiddenField' => false,
'options' => $regions,
'multiple' => 'checkbox',
'div' => array ('class' => 'box2li')
));
现在每个复选框都以...开头
答案 2 :(得分:0)
使用表单&gt;复选框而不是表单&gt;输入
$this->Form->checkbox('', array(
'label' => false,
'div' => false,
'class' => ''
));
答案 3 :(得分:0)
$this->Form->checkbox('', array(
'label' => false,
'div' => false,
'class' => ''
));
$this->Form->checkbox('', array(
'label' => false,
'div' => false,
'class' => ''
));