一部の人にとっては当然のことのように思えるかもしれませんが、私は正直な答えを見つけるのに本当に苦労しています. 私は一般的にググっただけでなく、CakePHP マニュアルと API の両方を読んで、次の質問に対する答えを見つけました。
入力を作成するとき、次のコードは次の出力を作成します。
// in the view
echo $this->Form->input('notes');
// resultant html
<div class="input textarea">
<label for="notes">Notes</label>
<textarea id="notes" rows="5" name="notes"></textarea>
</div>
注: これはほとんどの入力タイプで一貫しています。一貫性があるため、書式設定に最適です。
ただし、チェックボックスを使用すると:
//In the view
echo $this->Form->input('ticket_required',
['type' => 'checkbox']
);
// resultant HTML
<div class="input checkbox">
<input type="hidden" value="0" name="ticket_required">
<label for="ticket-required">
<input id="ticket-required" type="checkbox" value="1" name="ticket_required">
Ticket Required</label>
</div>
[注: 非表示フィールドの必要性/要望を理解しています]
さて..確かに、他のすべての標準入力と同じ形式のアプローチが必要なことは珍しい要件ではないでしょうか?
私の質問 - 次のように CakePHP にチェックボックス要素を作成させるにはどうすればよいですか:
// desired HTML
<div class="input checkbox">
<input type="hidden" value="0" name="ticket_required">
<label for="ticket-required">
Ticket Required</label>
<input id="ticket-required" type="checkbox" value="1" name="ticket_required">
</div>
明確にするために: 表示される要素の順序は、他の生成された要素と同じです (入力の前にラベルがあり、すべてラッピング div で囲まれています)。
注意してください..私は'nestedInput' => false
オプションを試しました。これにより、実際にはdivからチェックボックス入力が完全に取り除かれます。
なぜこれがそのように行われないのか理解できません...しかし、たとえそうであったとしても、なぜこれがドキュメントの明白な質問ではないのか理解できません.
ああ、うまくいけば、誰かがここで私を助けてくれることを願っています。
前もって感謝します。
リック