0

アクティブなフォームには、3 つのテキスト入力と 1 つのチェックボックスがあります。3 つのすべてのテキスト入力には、空にすることはできないというルールがあります。チェックボックスをクリックすると、ルールが無効になり、空のレコードがデータベースに保存されます。

これがアクティブフォームのスクリーンショットです..

ここに画像の説明を入力

4

2 に答える 2

1

次のようなことができます。

$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';}")]
于 2015-06-22T08:43:01.447 に答える