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

时间:2013-12-21 21:13:43

标签: yii

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

我有Review模型和Product模型。 Review表单通过窗口小部件显示在Product视图中,但如何提交表单本身?现在,它没有做任何事情。我可以通过审核/创建提交,但不能通过Product视图提交。

或者我想在小部件中发帖?

2 个答案:

答案 0 :(得分:0)

如果您将以下代码放在 components / ReviewWidget.php 上,则可以实现此目的。我猜你有Review作为模型及其各自的控制器和视图文件在默认位置。

<?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,
        ));
    }
}

然后,在视图上的任何位置调用上面的小部件,如下所示,

<?php  $this->widget('ReviewWidget'); ?>

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

答案 1 :(得分:0)

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

$this->renderPartial('//views/reviw/_form',array('data' => $data ) );

此函数的第一个参数用于确定要使用的视图:

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

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

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

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

  •   

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