【问题标题】:actionUpdate() in Yii multimodel form?Yii 多模型形式的 actionUpdate()?
【发布时间】:2012-02-17 12:32:59
【问题描述】:

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() 中该怎么做呢?如何声明这两个模型?任何帮助和建议都会非常有用。

【问题讨论】:

    标签: php yii yii-cmodel


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 1970-01-01
        • 1970-01-01
        • 2014-12-22
        相关资源
        最近更新 更多