假设我们想要使用一个HTML表单收集输入的model A 和 model B,我们想要显示的输入错误(如果有的话)在同一错误消息盒子显示。我们按照以下代码写:
public function actionCreate()
{
$a=new A;
$b=new B;
if(isset($_POST['A'], $_POST['B']))
{
// 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
}
}
$this->render('create', array(
'a'=>$a,
'b'=>$b,
));
}做为create视图,我们需要写下面的代码,
<?php echo CHtml::form(); ?>
//create.php
<?php echo $this->renderPartial('_form', array('a'=>$a,'b'=>$b)); ?>
// _form.php
<?php echo CHtml::errorSummary(array($a,$b)); ?>
...input fields for $a, $b...
</form>上述方法我们也可以使用有超过两种model的处理。