Yii2: validação no formulário com duas instâncias do mesmo modelo

Eu tenho uma reserva de modelo com os campos shipping_address e billing_address, ambos do endereço do modelo. Agora, quero imprimi-los da mesma forma, que basicamente funciona muito bem, o problema é que os campos dos dois modelos têm os mesmos IDs. Por exemplo, o campo "zip" no endereço de envio tem o ID "zip" e o "zip" no endereço de cobrança também possui "ID" como seu ID.

Se agora eu preencher o formulário, ele valida os dois campos ao mesmo tempo, enquanto apenas um deles é verdadeiro.

Eu já alterei os nomes dos campos para Shippping_Address ['zip'] e Billing_Address ['zip'], portanto, o controlador é capaz de reconhecer os dois modelos.

Veja como os campos são impressos:

<?= $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: Depois de implementar a resposta de 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',
            ]); ?>

Também mudei a classe de contêiner porque era a mesma que a do outro campo. Agora o segundo campo (com o código mostrado acima) está funcionando perfeitamente. O problema é que o primeiro campo (com o código inalterado) não está mais validando.

Como isso poderia ser resolvido?

questionAnswers(1)

yourAnswerToTheQuestion