cakephp:如何设置复选框以进行检查?

Dav*_*ave 26 cakephp

我在用

$form->input('Model.name', array('multiple'=>'checkbox');
Run Code Online (Sandbox Code Playgroud)

我试图基于模型数据来设置要检查的特定复选框.

我怎样才能做到这一点?

Mar*_*rko 30

cmptrgeekken的解决方案适用于单个复选框.我假设您正在生成多个复选框,用于HABTM关系或类似的东西.

您需要将包含要选择的元素值的数组传递给方法,如下所示:

$options = array(1 => 'ONE', 'TWO', 'THREE');
$selected = array(1, 3);
echo $form->input('Model.name', array('multiple' => 'checkbox', 'options' => $options, 'selected' => $selected));
Run Code Online (Sandbox Code Playgroud)

将产生这个:

 <div class="input select">
      <label for="ModelName">Name</label>
      <input name="data[Model][name]" value="" type="hidden">

      <div class="checkbox">
           <input name="data[Model][name][]" checked="checked" value="1" id="ModelName1" type="checkbox">
           <label for="ModelName1" class="selected">ONE</label>
      </div>
      <div class="checkbox">
           <input name="data[Model][name][]" value="2" id="ModelName2" type="checkbox">
           <label for="ModelName2">TWO</label>
      </div>
      <div class="checkbox">
           <input name="data[Model][name][]" checked="checked" value="3" id="ModelName3" type="checkbox">
           <label for="ModelName3" class="selected">THREE</label>
      </div>
 </div>
Run Code Online (Sandbox Code Playgroud)

选中第一个和第三个复选框.

请记住,您实际上正在使用多个选择元素,它只是显示为一堆复选框(由于可用性,这是更好的IMO).


cmp*_*ken 24

我不使用CakePHP,但根据文档,看起来好像你应该能够添加选项'checked'=>true:

$form->input('Model.name', array('type'=>'checkbox','checked'=>true));
Run Code Online (Sandbox Code Playgroud)

因为这是复选框功能的选项之一.