2013-12-21 78 views
1

如何從一個控制器發佈到另一個視圖?將表單從一個模型提交到Yii的另一個視圖

我有一個Review模型和Product模型。 Review表單通過窗口小部件顯示在Product視圖中,但我如何提交表單本身?現在,它什麼都不做。我可以通過審查/創建提交,但不能通過Product查看。

或者我想在小部件中做文章?

+2

如果您多告訴我們一點,這將有所幫助。你如何精確地渲染該表單?通過哪個小部件? – DaSourcerer

+0

發佈包含該窗體的視圖,並且您的控制器 – tinybyte

+0

發佈了與視圖和控制器/操作相關的代碼 – dev1234

回答

0

如果你把如下的代碼放在組件/ ReviewWidget.php上,你可以實現它。我認爲你有作爲模型審查和其相應的控制器和視圖文件的默認位置。

<?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'); ?> 

它只會處理項目的創建。你必須自己創建代碼來更新項目。

+0

我意識到我從小部件中的cactiveform開始。但是,這很好。謝謝! – jaime

0

在你的控制器動作,您必須使用

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

這個函數的第一個參數是用來確定哪些查看使用功能的RenderPartial:

  • 絕對視圖模塊中:在視圖名稱以單斜槓'/'開始。在這種情況下,該視圖將在當前活動模塊的視圖路徑下搜索
    。如果沒有活動模塊,
    該視圖將在應用程序的視圖路徑下搜索。

  • 應用程序中的絕對視圖:視圖名稱以雙斜線「//」開頭。在這種情況下,該視圖將在應用程序的視圖路徑下搜索
    。從版本1.1.3開始,此語法已可用

  • 別名視圖:視圖名稱包含點並引用路徑別名。通過調用
    YiiBase :: getPathOfAlias()來確定視圖文件。請注意,別名視圖不能爲主題
    ,因爲它們可以引用位於任意位置的視圖文件。

  • 相對視圖:否則。將在當前活動的控制器的視圖路徑下搜索相對視圖。

你也可以在你的視圖使用此功能。但是重用視圖最方便的方式是創建小部件。

相關問題