web-dev-qa-db-ja.com

Yii2:契約条件のサインアップ時にチェックボックスルールが機能しない

サインアップ時に特定のメッセージが必要ですが、何らかの理由でメッセージが表示されません。

助けてください

私には次のルールがあります:

['acordul_tc', 'required', 'on' => ['register']],
['acordul_tc', 'integer', 'max' => 1, 'message' => 'my test message'],

およびhtml:

<div style='position:relative; float:left; padding:5px;'>
<div style='float:left; padding:5px;'>
    <?php
        echo $form->field($model, 'acordul_tc', 
        ['options' => ['tag' => 'span',], 
        'template' => "{input}"])->checkbox(['checked' => false]);
    ?>
</div>
<div style='float:left; padding:5px;'>
    <?php
        echo \Yii::t('user', 'acordul_tc_start') . 
        Html::a(Yii::t('diverse', 'Termenii si Conditiile'), 
               ['site/terms-and-conditions']) . 
            \Yii::t('user', 'acordul_tc_end');
    ?>
</div>
</div>
<div class="col-lg-12">
<?php
    echo $form->field($model, 'acordul_tc', 
         ['template' => "{error}"])
         ->error();
?>

チェックボックスがチェックされていないときにエラーメッセージを表示したい場合は、このルールを試してください

 ['acordul_tc', 'required', 'on' => ['register'], 'requiredValue' => 1, 'message' => 'my test message']

これは、属性が必須であり、1に等しくなければならないことを意味します。そうでない場合、メッセージにエラーが表示されます。

38
olchick

モデル>ルール関数内

[['acordul_tc'], 'compare', 
    'compareValue' => true,
    'operator' => '==',
    'when' => function ($data) {
        return $data->acordul_tc== 1;
    }
],
1
  1. 承認済みの回答では、必要なチェックボックスが「赤」の色でマークされていません。
  2. 部分的に受け入れられるチェックボックスの下にエラーメッセージのみが表示されます。ソリューションは、メッセージだけでなくUIに対して適切な検証効果を示す場合にのみ受け入れられる必要があります。
  3. 以下は、エンドユーザーに期待される出力を取得するためにFORMで実行する必要のあるコード変更です。

    echo $form->field($model, 'acordul_tc', 
                    ['options' => ['tag' => 'span'], 
                    template' => "{input}"]
                )
              ->checkbox(['checked' => false, 'required' => true]);
    
  4. 以下はすべてを説明する画像です。

enter image description here

0
Ankur Soni