【问题标题】:Getting error in Yii Multimodel FormYii 多模型表单中出现错误
【发布时间】:2012-01-19 19:47:02
【问题描述】:

我是 Yii 框架的新手。我想要一个多模型表单,所以我刚刚通过 this link 并做了所有这样的事情。我有两个表,第一个是组,另一个是成员。

Group

 ID
 name

 Member

 id
 group_id
 firstname
 lastname

现在我也为表和 CRUD 制作了模型。我对 GroupController 文件进行了这样的更改

public function actionCreate()
  {
    $group = new Group;
    $member = new Member;
    if(isset($_POST['Group'],$_POST['Member'])) {
    //Populate input data to $group and $member
      $group->attributes = $_POST['Group'];
      $member->attributes = $_POST['Member'];

    //Validate both $group and $member
      $validate = $group->validate();
      $validate = $member->validate() && $valid;

      if($valid){
        $group->save(false);
        $member->save(false);
      }
    }
    $this->render('create',array(
      'group'=> '$group',
      'member'=> '$member',
    ));
    $model=new Group;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['Group']))
    {
      $model->attributes=$_POST['Group'];
      if($model->save())
        $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
      'model'=>$model,
    ));
  }

更改组后>>查看>>像这样的create.php文件

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

_form文件是这样的

<div class="form">

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

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

  <?php echo $form->errorSummary($group,$member); ?>

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

  <div class="row">
    <?php echo $form->labelEx($member,'firstname'); ?>
    <?php echo $form->textField($member,'firstname',array('size'=>60,'maxlength'=>128)); ?>
    <?php echo $form->error($member,'firstname'); ?>
  </div>

  <div class="row buttons">
    <?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>
  </div>

<?php $this->endWidget(); ?>

</div><!-- form -->

但毕竟我遇到了这样的错误Undefined variable: group . 所以有人可以告诉我如何解决这个问题。我已经失去了一天的时间。因此,任何帮助和建议都将非常感激。

【问题讨论】:

    标签: php yii undefined yii-cmodel


    【解决方案1】:

    你在这里犯了多个错误->

    当你打电话时

     $this->render('create',array(
          'model'=>$model,
        ));
    

    您没有传递您在组创建控制器中创建的 $group 或 $member 模型。将其更改为 -

     $this->render('create',array(
          'group'=>$group,
          'member'=>$member,
        ));
    

    其次,没有名为 $valid 的变量...更改这部分

    $validate = $member->validate() && $valid;
    
      if($valid){
    

    $validate = $member->validate() && $validate;
    
          if($validate){
    

    现在应该可以正常工作了

    【讨论】:

    • 感谢您的快速回复。我改变了你提到的所有东西,但它显示了同样的问题。未定义的变量:组
    • 您能否提供有关错误的更多详细信息...例如 undefined where?
    • 它显示类似“未定义变量:组”的错误,源文件路径就像这样 /YII/WebApp/protected/views/member/create.php(14) 和行中(14 ) 它就像 renderPartial('_form', array('group'=>$group, 'member'=>$member)); ?>
    • 似乎您正在调用 url /index.php?r=member/create... 您已经对控制器和组视图进行了更改。因此你需要调用组控制器 -> /index.php?r=group/create... 如果你想调用成员控制器的创建动作,你需要复制你的组控制器创建动作代码那里跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 2011-07-14
    相关资源
    最近更新 更多