私は一日中作業しています。これは私がここに投稿した最初の時間ですので、誰かが私を助けてくれることを願っています。Yii2検証は、繰り返しモデルレコードのフォームで間違ってトリガーされます
私はあるフォームの複数のレコードが同じモデルであるフォームを持っています。その結果、私は手動で名前タグとidタグを設定しました。 foreachループに次のコードを置き、ビュー内にタグを生成します。
// updatemember.php view has these declarations
use kartik\widgets\ActiveForm;
...
$form = ActiveForm::begin([
'id' => 'tab-horizontal',
'type' => ActiveForm::TYPE_HORIZONTAL,
'formConfig' => ['labelSpan' => 4 ],
'options' => ['enctype' => 'multipart/form-data'],
]
);
...
// updatemember calls this subform _claimcontact.php
use kartik\builder\Form;
...
echo Form::widget([
'model'=>$claimcontact,
'form'=>$form,
'columns'=>2,
'attributes'=>[
'phone_container'=>[
'label'=>'Phone',
'attributes'=>[
'phone'=>[
'type'=>Form::INPUT_TEXT,
'options'=>['name'=>"ClaimContact[$index][phone]", 'id'=>"claimcontact-phone_$index", ],
'container' => ['class'=>$col_width],
],
],
],
'email_container'=>[
'label'=>'Email',
'attributes'=>[
'email'=>[
'type'=>Form::INPUT_TEXT,
'options'=>['name'=>"ClaimContact[$index][email]", 'id'=>"claimcontact-email_$index", ],
'container' => ['class'=>$col_width],
],
],
],
],
]);
?>
</div>
</div>
</div>
</div>
私はClaimContactモデルでルールを設定し、私がフィールドを離れて、それは、レコード3のためではなく、レコード2のために適切にそれをしないとき、検証が正しくエラーメッセージとCSSをトリガするので、それは良いことです電子メール3は空白で電子メール2は空白ではありません。
[['first_name', 'last_name', 'position', 'phone', 'email' ] , 'required',
残念ながら、[送信]ボタンをクリックすると、入力されたファイル名フィールドを含むすべてのレコードがファイル名の検証によってトリガーされます。私はサンプル画像を添付しました。 Invalid validation ソースhtmlページの下に生成されたYii検証スクリプトは、問題を引き起こしている可能性のあるタグIDと名前が重複しているようです。
{"id":"claimcontact-email","name":"email","container":".field-claimcontact-email_0","input":"#claimcontact-email_0","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages,
{"message":"Email cannot be blank."});}},
...
{"id":"claimcontact-email","name":"email","container":".field-claimcontact-email_1","input":"#claimcontact-email_1","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages,
{"message":"Email cannot be blank."});}},
...
{"id":"claimcontact-email","name":"email","container":".field-claimcontact-email_2","input":"#claimcontact-email_2","validate":function (attribute, value, messages, deferred, $form) {yii.validation.required(value, messages,
{"message":"Email cannot be blank."});}},
私は、それぞれ "ID" タグがclaimcontact-EMAIL_0をするように設定した場合、claimcontact-EMAIL_1とclaimcontact-EMAIL_2考えます私は検証がうまくいくと思う。
inputOptionsとjqueryセレクタオプションを設定しようとしましたが、これは動作しません。
複数のモデル記事(http://www.yiiframew...ple-models.html)を読んで使用しましたが、それまでのところまで練習しましたが、私は別のプロジェクトから多くの問題を抱えていましたので、上記のアプローチをよりコントロールすることに決めましたが、妥当性確認のヒッチのビット私は助けを必要としてください。
私の問題を読む時間をとってくれてありがとう。