我與複選框戰鬥在那裏的CakePHP不產生正確的代碼,我不明白爲什麼:CakePHP3.3.15:表單助手不產生正確的複選框代碼
我初始化實體一樣,在我的控制器:
public $defaultPermissionFields = [
/*
* Module, item, item_visible, item_editable
*/
['item_visible' => 0],
['item_visible' => 1],
];
$permissions = $this->Permissions->newEntities($defaultPermissionFields);
所以我在CTP文件下面的代碼:
<?= $this->Form->create($permissions, ['horizontal' => true])?>
<fieldset>
<div class="table-responsive well">
<table class="table table-bordered table-striped">
<?php foreach ($permissions as $key => $permission):?>
<tr>
<td class="text-center">
<?= $this->Form->checkbox('permissions.' . $key . '.item_visible', ['label' => false, 'value' => $permission->item_visible, 'required' => false]);?>
</td>
</tr>
<?php endforeach;?>
</table>
</div>
</fieldset>
<?= $this->Form->button(__("Save"), ["class" => "btn btn-primary btn-block"]) ?>
<?= $this->Form->end(); ?>
而且奇怪的是,生成以下代碼:
<table class="table table-bordered table-striped">
<tr>
<td class="text-center">
<input type="hidden" name="permissions[0][item_visible]" value="0"/> <-- WHY ???
<input type="checkbox" name="permissions[0][item_visible]" value="0">
</td>
</tr>
<tr>
<td class="text-center">
<input type="hidden" name="permissions[1][item_visible]" value="0"/>
<input type="checkbox" name="permissions[1][item_visible]" value="1" checked="checked">
</td>
</tr>
</table>
正如你所看到的,對於第二行,複選框的值是1
,它被檢查並且它的隱藏值是0
。這是預期的代碼。 但 第一行,該複選框值0
和隱藏的價值也0
而不是1
你能告訴我爲什麼嗎?
我有第二個問題,但可能是由於第一個問題導致我需要添加required => false
因爲沒有它,如果我取消選中複選框,瀏覽器告訴我需要選中該框!
你說得對,問題不在我身上。實際上,我使用了'value',因爲複選框的狀態並不反映'item_'的值。這是我的主要問題。無論「item_visible」的值是多少,複選框都會被選中,我不明白爲什麼。這似乎是問題來自使用items數組,我不認爲我使用了壞記號....也許你可以看看這個[gist](https://gist.github.com/2ndGAB/a77a6b01822d82da27043c7b148a5847) – 2ndGAB
好吧,當然,我讀對角線的帖子的結尾: - / – 2ndGAB