2011-09-15 85 views
2

如何从从 - 生成>开关输入,用于多个复选框这样的“代码”:显示复选框 - CakePHP的

<ul class="inputs-list"> 
<li> 
<label> 
<input type="checkbox" value="option1" name="optionsCheckboxes"> 
<span>Option one is this and that&mdash;be sure to include why it’s great</span> 
</label> 
</li> 
<li> 
<label> 
<input type="checkbox" value="option2" name="optionsCheckboxes"> 
<span>Option two can also be checked and included in form results</span> 
</label> 
</li> 
</ul> 

现在我有这样的代码:

echo $this->Form->input('User', array(
     'label' => FALSE, 
     'type' => 'select', 
     'multiple' => 'checkbox', 
     'options' => $users, 
     'selected' => $html->value('User.User'), 
     'between' => '<ul class="inline"><li>', 
     'after' => '</li></ul>', 
     'separator' => '</li><li>' 
    )); 

但而不是李标签的我全身都裹在div标签:

<ul class="inline"> 
<li> 
<input id="UserUser" type="hidden" value="" name="data[User][User]"> 
<div class="xlarge"> 
<input id="UserUser4" type="checkbox" value="4" checked="checked" name="data[User][User][]"> 
<label class="selected" for="UserUser4">Andraž</label> 
</div> 
<div class="xlarge"> 
<input id="UserUser5" type="checkbox" value="5" checked="checked" name="data[User][User][]"> 
<label class="selected" for="UserUser5">Pinko</label> 
</div> 
</li> 
</ul> 
+2

还有一个选项叫做'div'使它成为假,那么它不会包装在div中。 'div'=> false试试这个选项。 – Vins

+0

不,它不工作。 – AtLeT

+0

@Vins有正确的答案。 [见书](http://book.cakephp.org/view/1397/options-div)。如果你想添加'',你可以试试'before'和'after'。请参阅表单帮助文档 – Ross

回答

0

我发现没有办法使每个复选框或删除div复选框的包装,使用'type' => 'select''multiple' => 'checkbox'。我建议循环列表中的用户,每个条目使用'type' => 'checkbox'。这使得它更加灵活地呈现:

<?php 
    $lUserList = Array(
    '0' => 'Simon', 
    '1' => 'AtLet', 
    '2' => 'Vins', 
    '3' => 'Ross' 
    ); 
?> 

<?php echo $this->Form->create(); ?> 

<ul> 
    <?php foreach($lUserList as $k => $v): ?> 
    <li>  
     <?php  
      echo $this->Form->input('User.'.$k, array(
        'type' => 'checkbox', 
        'label' => $v, 
        'div' => false 
       )); 
     ?> 
    </li> 
    <?php endforeach; ?> 
</ul>  

<?php echo $this->Form->end('Save'); ?>