Php 如何使用Yii验证多个模型?
我使用以下代码来保存和验证Booking和BookingRoom(链接表)模型,但一次只能验证一个。我成功地保存并填充了我的数据库,但验证是按顺序进行的 $Booking->save() $BookingRoom->save()Php 如何使用Yii验证多个模型?,php,validation,yii,Php,Validation,Yii,我使用以下代码来保存和验证Booking和BookingRoom(链接表)模型,但一次只能验证一个。我成功地保存并填充了我的数据库,但验证是按顺序进行的 $Booking->save() $BookingRoom->save() 如何验证和保存多个模型?您应该从模型中调用validate()方法,如下面的示例: // populate input data to $a and $b $a->attributes=$_POST['A']; $b->attributes=
如何验证和保存多个模型?您应该从模型中调用validate()方法,如下面的示例:
// populate input data to $a and $b
$a->attributes=$_POST['A'];
$b->attributes=$_POST['B'];
// validate BOTH $a and $b
$valid=$a->validate();
$valid=$b->validate() && $valid;
if($valid)
{
// use false parameter to disable validation
$a->save(false);
$b->save(false);
// ...redirect to another page
}
有关更多信息,请参见此。解释
$valid=$a->validate()$valid=$b->validate()&&$valid代码>-
$valid=$a->validate()代码>将根据验证返回TRUE
或FALSE
因此,让我们假设$valid=TRUE
现在当$valid=$b->validate()和&$valid代码>被执行
执行下一个模型的验证,并返回一些值(TRUE或FALSE)
语句看起来像$valid=TRUE&&TRUE
或$valid=FALSE&&TRUE代码>
因此,现在if($valid){[…]}
中$valid
的值是TRUE
或FALSE
你可以像($model->validate()&&&$BookingRoom->validate()){$model->save(false);$BookingRoom->save(false);}一样进行验证。
一些模型->save()
总是需要单独调用。这似乎对我不起作用。我没有收到任何错误消息。你的意思是即使表单有错误也没有错误消息?错误消息是针对预订模型显示的,但不针对BookingRoom模型显示的。由@Everton给出的答案就可以了。我的意思是使用$valid
的方式。它现在正在工作。谢谢我不知道代码在做什么。。。你能解释一下$valid=$a->validate()吗$valid=$b->validate()&&$valid@库纳尔在下面的回答中解释道:)