以Yii多模式形式的actionUpdate()?

时间:2012-02-17 12:33:00

标签: php yii yii-cmodel

Yii multimodel形式中,我们只使用actionCreate()在一个视图中创建两个模型的形式。这里的一切都很好。但是当我们将在多模型的单个视图中更新两个模型时模型将在这里定义? 让我举一个例子。只是认为数据库就像这样

 === Project ===
  id
  task_id(FK)
  description

  === Task ===
  id
  name
  description

所以在项目控制器的actionCreate()中,代码将是这样的

    public function actionCreate()
  {
    $model=new Projects;
    $tasks=new Projects;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);
    if (isset($_POST['Projects'],$_POST['Tasks']))
    {
      $model->attributes = $_POST['Projects'];
      $tasks->attributes = $_POST['Tasks'];
      $valid = $model->validate();
      $valid = $tasks->validate();
      if($valid)
      {
        $model->save(false);
        $tasks->save(false);
        $this->redirect(array('view','id'=>$model->id));
      }
    }
    $this->render('create',array(
      'model'=>$model,
      'tasks'=>$tasks,
    ));
  }

现在,这两个模型已准备就绪。那么在actionView()actionUpdate()中该怎么做?如何声明这两个模型?任何帮助和建议都会非常适合。

2 个答案:

答案 0 :(得分:0)

这真的不一样吗?加载视图/更新时,您只需要在GET中使用ID,它可以告诉您要加载哪些模型。如果使用ActiveRecord,模型将是Projects :: model() - > findByPk($ myId)。更新时,您可以像使用create一样分配属性,但请确保首先从数据库加载模型。

答案 1 :(得分:0)

您没有为任务模型创建任何对象。