如何從一個控制器發佈到另一個視圖?將表單從一個模型提交到Yii的另一個視圖
我有一個Review
模型和Product
模型。 Review
表單通過窗口小部件顯示在Product
視圖中,但我如何提交表單本身?現在,它什麼都不做。我可以通過審查/創建提交,但不能通過Product
查看。
或者我想在小部件中做文章?
如何從一個控制器發佈到另一個視圖?將表單從一個模型提交到Yii的另一個視圖
我有一個Review
模型和Product
模型。 Review
表單通過窗口小部件顯示在Product
視圖中,但我如何提交表單本身?現在,它什麼都不做。我可以通過審查/創建提交,但不能通過Product
查看。
或者我想在小部件中做文章?
如果你把如下的代碼放在組件/ 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'); ?>
它只會處理項目的創建。你必須自己創建代碼來更新項目。
我意識到我從小部件中的cactiveform開始。但是,這很好。謝謝! – jaime
在你的控制器動作,您必須使用
$this->renderPartial('//views/reviw/_form',array('data' => $data));
這個函數的第一個參數是用來確定哪些查看使用功能的RenderPartial:
絕對視圖模塊中:在視圖名稱以單斜槓'/'開始。在這種情況下,該視圖將在當前活動模塊的視圖路徑下搜索
。如果沒有活動模塊,
該視圖將在應用程序的視圖路徑下搜索。應用程序中的絕對視圖:視圖名稱以雙斜線「//」開頭。在這種情況下,該視圖將在應用程序的視圖路徑下搜索
。從版本1.1.3開始,此語法已可用
。別名視圖:視圖名稱包含點並引用路徑別名。通過調用
YiiBase :: getPathOfAlias()來確定視圖文件。請注意,別名視圖不能爲主題
,因爲它們可以引用位於任意位置的視圖文件。相對視圖:否則。將在當前活動的控制器的視圖路徑下搜索相對視圖。
你也可以在你的視圖使用此功能。但是重用視圖最方便的方式是創建小部件。
如果您多告訴我們一點,這將有所幫助。你如何精確地渲染該表單?通過哪個小部件? – DaSourcerer
發佈包含該窗體的視圖,並且您的控制器 – tinybyte
發佈了與視圖和控制器/操作相關的代碼 – dev1234