我一直在這一整天,這是我第一次張貼在這裏,所以我希望有人可以幫助我,請。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模型,當我離開現場驗證正確觸發錯誤消息,CSS和它確實是正確的記錄3,但沒有備案2,所以這是好電子郵件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."});}},
我認爲,如果 「身份證」 標籤分別設定到claimcontact-EMAIL_0,claimcontact,EMAIL_1和claimcontact,EMAIL_2我敢打賭驗證會起作用。
我曾嘗試設置inputOptions和jquery選擇器選項,但這不起作用。
我已經閱讀並使用了多模型文章(http://www.yiiframew...ple-models.html),它的工作達到了一定程度,但是我從另一個項目中得到了很多問題,因此我決定按照上述方法進行更多的控制,但有在驗證中有點麻煩,我需要幫助。
感謝您花時間閱讀我的問題。