[解決]CakePHPのCheckboxはBootstrap4では動きません!!!
そうなんです!
Cakephp4では複数でも一つでもBootstrap4を当てると動きません。don't work..can't workなんですよ。
なぜなら、Cakephpのチェックボックスではlabelとinputがテレコになって出力されるからです!←ここまで4時間
下記はOK
<div class="custom-control custom-checkbox"> <input type="checkbox" class="custom-control-input" id="checkmeout0"> <label class="custom-control-label" for="checkmeout0">Check me out !</label> </div>
これはNG 動きません!
<div class="custom-control custom-checkbox mb-3"> <label class="custom-control-label" for="checkmeout2"> <input type="checkbox" class="custom-control-input" id="checkmeout2"> エラーだよerror!</label> </div>
チェックができない(外すこともできない)んです
Cakephpから出力されるのは、後者なので、Bootstrapでは動きません。
それでどうするか??
長くなるので、解決策を載せます。
<?= $this->Form->control('tags._ids', [
'multiple' => 'checkbox',
'hiddenField' => false,
'label' => false,
'options' => $tags,
'value'=>$tagAry,
'class' => 'custom-control-input',
'templates' => [
'inputContainer' => '{{content}}',
'checkboxWrapper' => '<div class="custom-control custom-checkbox">{{label}}</div>',
'nestingLabel' => "{{input}}<label class='custom-control-label'{{attrs}} >{{text}}</label>"],
]); ?>
ポイントは、templatesです!
'inputContainer' => '{{content}}' でhiddenを無くし、
'checkboxWrapper' => '<div class="custom-control custom-checkbox">{{label}}</div>'
これでwrapする。
そして、そして、これでテレコの解消だ!!!
'nestingLabel' => "{{input}}<label class='custom-control-label'{{attrs}} >{{text}}</label>"],
ここまでで2日間、、何してたんだろう。。。
ちなみに、チェックボックスは「2つ表示」していると、動きません!
そう、仮に正しく動く、ソースでも、画面上のチェックボックスが2つあると動きません。
同じ、id(input)とfor(label)があると動きません。
これでIt's work!!ですよ、皆さん。