如何使用一个form收集两个或两个以上的model数据? [ 未指定版本 ]
假设我们想要使用一个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的处理。
╃巡洋艦㊣ 北京
注册时间:2010-11-21
最后登录:22小时前
在线时长:1673小时31分
最后登录:22小时前
在线时长:1673小时31分
- 粉丝1369
- 金钱76263
- 威望845
- 积分101443
共 11 条评论
注意一定要在update里映射下这两个model否则会出错……我就犯了这样的低级错误o(╯□╰)o
太有才了你,写了这么多技术文章。
怎么没东西呀?
谢谢了!楼主真强
嗯,以前还没想过这个问题,学习了
测试中,有 TestOne 和 TestTwo 两个模型,在验证的时候出现以下错误,不知道是怎么回事。Object of class TestTwo could not be converted to string
正好要用到这个东西,下边的input框也需要用chtml生成吗,另外这个
<? php echo $this -> renderPartial ( ' _form ' , array ( ' a ' => $a , ' b ' => $b ) ) ; ?>
是什么作用呢支持舰长。受用了。。
这个教程2.0 还适应吗?
可以适应。
为什么不用Yii::$app->request->post();
不错,受用了!