アクティブなフォームには、3 つのテキスト入力と 1 つのチェックボックスがあります。3 つのすべてのテキスト入力には、空にすることはできないというルールがあります。チェックボックスをクリックすると、ルールが無効になり、空のレコードがデータベースに保存されます。
これがアクティブフォームのスクリーンショットです..
アクティブなフォームには、3 つのテキスト入力と 1 つのチェックボックスがあります。3 つのすべてのテキスト入力には、空にすることはできないというルールがあります。チェックボックスをクリックすると、ルールが無効になり、空のレコードがデータベースに保存されます。
これがアクティブフォームのスクリーンショットです..
次のようなことができます。
$model = new SomeForm();
if ($model->load(Yii::$app->request->post())){
if ($model->checkbox == true) $model->scenario = 'checked';
}
// your model rules:
[['name', 'email', 'subject', 'body'], 'safe', 'on' => 'checked']
または代わりにこれを行うことができます:
if ($model->checkbox == true) $model->save(false); //this will disable any validation so be carefull
編集: クライアント側の検証スイッチが必要な場合は、これを使用する必要があります:
[['name', 'email', 'subject', 'body'], 'required', 'when' => function ($model) {
return $model->cancelled == '0';
}, 'whenClient' => new JsExpression("function (attribute, value) { return $('#mailform-cancelled').val() == '0';}")]