【发布时间】:2015-07-04 13:15:53
【问题描述】:
跟进:Yii2: Validation in form with two instances of same model
我有一个模型 Booking,其中包含模型地址 shipping_address 和 billing_address 字段。我现在想将它们打印成基本上工作得很好的相同形式。验证在用数据填充字段时起作用,但在提交表单时失败。
在控制器中,使用现有地址模型的字段设置帐单地址,并使用新地址模型设置送货地址:
public function actionCreate()
{
$model = new Donation();
if (!empty($_POST['Address'])) {
//TODO: Save models
return $this->redirect(['view', 'id' => $model->id]);
} else {
$user = User::find(Yii::$app->user->identity->id)->one();
$billing_address = $user->getBillingAddress()->one();
return $this->render('create', [
'model' => $model,
'billing_address' => $billing_address,
'shipping_address' => new Address()
]);
}
}
以下代码显示了字段的打印方式。
帐单字段:
<?= $form->field(
$billing_address,
'address_line_1',
[
'selectors' => [
'input' => '#billing-address_line_1',
'error' => '#billing-address_line_1',
'container' => '.billing-address_line_1'
],
'options' =>
['class' => 'billing-address_line_1']
])->textInput([
'maxlength' => 45,
'name'=> 'Billing_Address[address_line1]',
'id'=>'billing-address_line_1',
]); ?>
运输字段:
<?= $form->field(
$shipping_address,
'address_line_1',
[
'selectors' => [
'input' => '#shipping-address_line_1',
'error' => '#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',
]); ?>
如以下屏幕截图所示,验证在填写表单时起作用:
现在的问题 - 当我单击创建按钮时它不起作用:
关于我如何解决这个问题的任何想法?填写验证和点击按钮验证有什么区别?
【问题讨论】:
-
请出示控制器代码
-
我添加了控制器代码,感谢您的帮助!
-
抱歉这个问题,但据我了解,您希望将两个地址都保存在数据库中。对吗?
-
请显示您的控制器的所有创建操作。我只看到了一部分。
-
我更新了代码,但实际上并没有什么可看的。当我单击创建按钮时,我没有再次访问控制器,它在 ajax 验证时失败,没有完成请求。
标签: php forms validation activerecord yii2