Yii2: Validación en forma con dos instancias del mismo modelo

Tengo un modelo de reserva con los campos shipping_address y billing_address, ambos de la dirección del modelo. Ahora quiero imprimirlos en la misma forma que básicamente funciona bastante bien, el problema es que los campos de ambos modelos tienen las mismas ID. Por ejemplo, el campo "zip" en shipping_address tiene el id "zip" y el "zip" en billing_address también tiene "zip" como id.

Si ahora completo el formulario, valida ambos campos al mismo tiempo, mientras que solo uno de ellos es verdadero.

Ya he cambiado los nombres de los campos a Shippping_Address ['zip'] y Billing_Address ['zip'], por lo tanto, el controlador puede reconocer ambos modelos.

Así se imprimen los campos:

<?= $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]']) ?>

Editar: Después de implementar la respuesta 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',
            ]); ?>

También cambié la clase contenedor porque era la misma que tenía el otro campo. Ahora el segundo campo (con el código como se muestra arriba) está funcionando perfectamente. El problema es que el primer campo (con el código sin cambios) ya no se valida.

¿Cómo podría resolverse esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta