div => false在CakepPHP input()FormHelper中不起作用

时间:2013-02-11 12:48:28

标签: php cakephp cakephp-2.0

我正在使用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>
...

我该怎么做?

4 个答案:

答案 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')
));

现在每个复选框都以...开头

  • ... bullet

  • 答案 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' => ''
    ));