Php YII:从控制器向小部件传递数据?
我有一个将数据传递给呈现函数的搜索页面:Php YII:从控制器向小部件传递数据?,php,yii,Php,Yii,我有一个将数据传递给呈现函数的搜索页面: public function actionIndex() { $this->render( 'searchResults', array( 'dataProvider' => $dataProvider, 'searchQuery' => $searchQuery, ) ); } 问题是,我还需要将这些数据从这里传递到侧边栏中出现的小部件。小部件当前显示在layout/m
public function actionIndex() {
$this->render(
'searchResults',
array(
'dataProvider' => $dataProvider,
'searchQuery' => $searchQuery,
)
);
}
问题是,我还需要将这些数据从这里传递到侧边栏中出现的小部件。小部件当前显示在layout/main.php中,如下所示:
<?php
$this->widget('searchSidebar', array(
'id' => 'searchSidebar',
));
?>
如何将数据从控制器传递到此widet,而不必再次执行查询?数据提供程序已包含所有数据
$dataProvider->data
$dataProvider->getData()
要将其放置在主布局中,可以在控制器中创建另一个变量
class Controller extends CController
{
public $data_exchange='';
...
}
使用$this->data\u 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
也许你可以看看Yii事件。看起来这可能会让你达到你想去的地方: