我有一个预订模型,其中包含 Shipping_address 和 billing_address 字段,这两个字段都是模型地址。
我现在想将它们打印成相同的形式,基本上效果很好,问题是两个模型的字段具有相同的 ID。例如,shipping_address 中的字段“zip”的 id 为“zip”,billing_address 中的“zip”的 id 也为“zip”。
如果我现在填写表格,它会同时验证这两个字段,而只有其中一个字段实际上是正确的。
我已经将字段名称更改为 Shippping_Address['zip'] 和 Billing_Address['zip'],因此控制器能够识别这两个模型。
以下是打印字段的方式:
<?= $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]']) ?>
编辑:实施托尼的答案后:
<?= $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',
]); ?>
我还更改了容器类,因为它与其他字段的容器类相同。现在第二个字段(代码如上所示)工作正常。问题是,第一个字段(代码不变)不再验证。
怎么解决这个问题呢?