在Yii中将表单从一个模型提交到另一个视图

在Yii中将表单从一个模型提交到另一个视图,yii,Yii,如何从一个控制器发布到另一个视图 我有一个评论模型和一个产品模型。Review表单通过小部件显示在Product视图中,但是如何提交表单本身?现在,它什么都没做。我可以通过查看/创建提交,但不能通过产品视图提交 或者我应该在小部件中发布帖子吗?如果您在组件/ReviewWidget.php上放置下面这样的代码,您就可以实现它。我想您已经在默认位置上查看了Review as model及其相应的控制器和视图文件 <?php class ReviewWidget extends CWidge

如何从一个控制器发布到另一个视图

我有一个
评论
模型和一个
产品
模型。
Review
表单通过小部件显示在
Product
视图中,但是如何提交表单本身?现在,它什么都没做。我可以通过查看/创建提交,但不能通过
产品
视图提交


或者我应该在小部件中发布帖子吗?

如果您在组件/ReviewWidget.php上放置下面这样的代码,您就可以实现它。我想您已经在默认位置上查看了Review as model及其相应的控制器和视图文件

<?php

class ReviewWidget extends CWidget{
    public function init() {
        return parent::init();
    }
    public function run(){
        $model = new Review;

        if (isset($_POST['Review'])) {
            $model->attributes = $_POST['Review'];
            $model->save();
        }
        $this->renderFile(Yii::getPathOfAlias('application.views.review'). '/_form.php',array(
            'model' => $model,
        ));
    }
}


它将只处理项目创建。您必须自己创建更新项目的代码

在控制器操作中,必须使用函数renderPartial

$this->renderPartial('//views/reviw/_form',array('data' => $data ) );
此函数的第一个参数用于确定要使用的视图:

  • 模块内的绝对视图:视图名称以单斜杠“/”开头。在这种情况下,将在
    当前活动模块的视图路径。如果没有活动模块,
    将在应用程序的视图路径下搜索视图

  • 应用程序内的绝对视图:视图名称以双斜杠“/”开头。在这种情况下,将搜索视图
    在应用程序的视图路径下。此语法已可用
    从版本1.1.3开始

  • 别名视图:视图名称包含点并引用路径别名。通过调用
    YiiBase::getPathOfAlias()。请注意,别名视图不能设置主题
    因为它们可以引用位于任意位置的视图文件

  • 相对视图:否则。将在当前活动控制器的视图路径下搜索相对视图


也可以在视图中使用此功能。但是重用视图最方便的方法是创建小部件。

如果您能告诉我们更多的信息,这会有所帮助。您是如何准确地呈现该表单的?通过哪个小部件?发布包含表单的视图,你的控制器发布与视图和控制器/操作相关的代码我意识到我是从小部件中的cactiveform开始的。但这很有效。谢谢
$this->renderPartial('//views/reviw/_form',array('data' => $data ) );