log

単一のチェックボックスを CakePHP 2.6.2 の FormHelper::input で扱う方法

忘れそうなので、単一の "0""1" を取るだけのチェックボックスを作る方法を記録しておきます。

FormHelper::input に渡すオプションの hiddenFieldtrue の場合、そのチェックボックスと同じ name 属性値を持ち、value 属性値に 0 を持つ input[type=hidden] 要素が直前に挿入されます。

hiddenField のデフォルト値は true です。

チェックされていればチェックボックスの値が、されていなければ input[type=hidden] 要素の値が送られます。

下記の例では defaultvalue の値が同一なため、デフォルトでチェックされたチェックボックスが出力されます。

<?php
// ビュー
echo $this->Form->input('Foo.bar', [
    'type' => 'checkbox',
    'default' => '1',
    'value' => '1',
]);
<?php
// モデル
public $validate = [
    'bar' => [
        'definedValue' => [
            'rule' => [
                'inList',
                [
                    '0',
                    '1',
                ]
            ],
            'required' => true,
            'allowEmpty' =>  false,
            'message' => '定義されていない値です',
        ],
    ],
];

環境

CakePHP 2.6.2 で確認しました。