Yii2: Validierung in Form mit zwei Instanzen desselben Modells

Ich habe eine Modellbuchung mit den Feldern Versand_Adresse und Rechnungs_Adresse, beide Modelladresse. Ich möchte sie jetzt auf das gleiche Formular drucken, was im Grunde ziemlich gut funktioniert. Das Problem ist, dass die Felder beider Modelle die gleichen IDs haben. Zum Beispiel hat das Feld "zip" in der Versandadresse die ID "zip" und die "zip" in der Rechnungsadresse hat auch "zip" als ID.

Wenn ich jetzt das Formular ausfülle, werden beide Felder gleichzeitig überprüft, während nur eines der Felder tatsächlich zutrifft.

Ich habe die Namen der Felder bereits in Shippping_Address ['zip'] und Billing_Address ['zip'] geändert, daher kann der Controller beide Modelle erkennen.

So werden die Felder gedruckt:

<?= $form->field($billing_address, 'address_line_1')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[address_line1]']); ?>
<?= $form->field($billing_address, 'address_line_2')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[address_line2]']) ?>
<?= $form->field($billing_address, 'zip')->textInput(['maxlength' => 11, 'name'=> 'Billing_Address[zip]']) ?>
<?= $form->field($billing_address, 'city')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[city]']) ?>
<?= $form->field($billing_address, 'country')->textInput(['maxlength' => 45, 'name'=> 'Billing_Address[country]']) ?>

<?= $form->field($shipping_address, 'address_line_1')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[address_line1]']); ?>
<?= $form->field($shipping_address, 'address_line_2')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[address_line2]']) ?>
<?= $form->field($shipping_address, 'zip')->textInput(['maxlength' => 11, 'name'=> 'Shipping_Address[zip]']) ?>
<?= $form->field($shipping_address, 'city')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[city]']) ?>
<?= $form->field($shipping_address, 'country')->textInput(['maxlength' => 45, 'name'=> 'Shipping_Address[country]']) ?>

Edit: Nach der Implementierung der Antwort von Tony:

<?= $form->field(
            $shipping_address,
            'address_line_1',
            [
                'selectors' => [
                    'input' => '#shipping-address_line_1',
                    'container' => '.shipping-address_line_1'
                ],
                'options' =>
                    ['class' => 'shipping-address_line_1']
            ])->textInput([
                'maxlength' => 45,
                'name'=> 'Shipping_Address[address_line1]',
                'id'=>'shipping-address_line_1',
            ]); ?>

Ich habe auch die Containerklasse geändert, da sie mit der des anderen Felds identisch war. Jetzt funktioniert das zweite Feld (mit dem oben gezeigten Code) einwandfrei. Das Problem ist, dass das erste Feld (mit unverändertem Code) nicht mehr validiert wird.

Wie könnte das gelöst werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage