我有一个搜索页面,可以将数据传递给渲染函数:
public function actionIndex() {
$this->render(
'searchResults',
array(
'dataProvider' => $dataProvider,
'searchQuery' => $searchQuery,
)
);
}
问题是,我还需要将此数据从此处传递到侧边栏中显示的窗口小部件。窗口小部件当前显示在layout / main.php中,如下所示:
<?php
$this->widget('searchSidebar', array(
'id' => 'searchSidebar',
));
?>
如何在不必重新再次查询的情况下从控制器传递数据到这个范围?
答案 0 :(得分:3)
dataProvider 已包含
中包含的所有数据$dataProvider->data
$dataProvider->getData()
要将其放置在主布局中,您可以在Controller中创建另一个变量
class Controller extends CController
{
public $data_exchange='';
...
}
在主要版面中$this->data_exchange
与breadcrumbs
相似的代码中操作很容易
$this->widget('searchSidebar', array(
'id' => 'searchSidebar',
'data' => $this->data_exchange
/* where $this refer to any class which extends Controller */
));
在您的视图中,代码将您的数据定义为:
$this->data_exchange = $dataProvider->data