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

4 回答 4

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>';
}

不是那么漂亮,但工作:)

于 2013-02-11T14:54:16.383 回答
1

通过设置'div' => false,您可以防止在整个输入部分(即复选框集)周围创建 <div>。但显然你想禁用该选项周围的 div。不幸的是,我还没有找到用 Cake 禁用它的方法。

但是,您可以使用一些 CSS 技巧来模拟 <li> 项。使用特殊类将输入封装在 div 中(与您现在所做的相反),然后使用 CSS 强制使用 <li> 样式:

在您的 CSS 中:

.box2li div
{
  display: list-item;
}  

在您的蛋糕视图中:

echo $this->Form->input('regions', array(
    'type'        => 'select',
    'hiddenField' => false,
    'options'     => $regions,
    'multiple'    => 'checkbox',
    'div'         => array ('class' => 'box2li')
));

现在每个复选框前面都有一个...

  • ...子弹

  • 于 2013-02-11T15:13:16.703 回答
    0

    使用 Form->Checkbox 而不是 Form->input

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    于 2015-02-10T06:43:37.120 回答
    0

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    $this->Form->checkbox('', array(
      'label' => false, 
      'div' => false,
      'class' => ''
    )); 

    于 2016-01-07T10:31:31.457 回答