YII存诸一个表单的数据到多个模型内

在项目开发中经常会遇到只有一个表单但是你要存诸数据写进2个表。

例如,用户注册的表单,登录信息和身份信息就应该写进2个表!

这个要如何写呢,下面我们看控制器的代码:

public function actionCreate()
{
     $modelA = new User;//实例化模型A
     $modelB = new Profile;//实例化模型B
     if(isset($_POST['User']) && isset($_POST['Profile']))//判断用户数据与身份信息
     {
         $modelA->attributes=$_POST['User'];
         $modelB->attributes=$_POST['Profile'];
         if($model->validate() && $modelB->validate())//这里是先验证数据,如果通过再save()。
         {
             if ($modelB->save(false))//前面已经验证通过了,这里加个false,表示保存之前不需要再验证了!
             {
                      $modelA->profile_id = $modelB->id;
                       if ($modelA->save(false))
                       {
                             $this->redirect(array('view','id'=>$modelA->id));
                       }
             }
          }
     }
     $this->render('create',array(
         'modelA'=>$modelA,
         'modelB'=>$modelB,
     ));


再看看视图文件的代码

<?php echo $this->renderPartial('_form', array('modelA'=>$modelA,'modelB'=>$modelB)); ?>

下面是_form的代码

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'User-form',
    'enableAjaxValidation'=>false,
)); ?>

    <p class="note">Fields with <span class="required">*</span> are required.</p>

    <?php echo $form->errorSummary(array($modelA,$modelB)); ?>//注意这里

    <div class="row">
        <?php echo $form->labelEx($modelA,'user_name'); ?>
        <?php echo $form->textField($modelA,'user_name'); ?>
        <?php echo $form->error($modelA,'user_name'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($modelA,'user_pass'); ?>
        <?php echo $form->textField($modelA,'user_pass'); ?>
        <?php echo $form->error($modelA,'user_pass'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($modelB,'status'); ?>
        <?php echo $form->textField($modelB,'status'); ?>
        <?php echo $form->error($modelB,'status'); ?>
    </div>

    <div class="row">
        <?php echo $form->labelEx($modelB,'address'); ?>
        <?php echo $form->textField($modelB,'address'); ?>
        <?php echo $form->error($modelB,'address'); ?>
    </div>
<?php $this->endWidget(); ?>



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值