5

レンダリング関数にデータを渡す検索ページがあります。

public function actionIndex() {

  $this->render(
    'searchResults', 
    array(
      'dataProvider' => $dataProvider,
      'searchQuery'  => $searchQuery,
    )
  );
}

問題は、このデータをここからサイドバーに表示されるウィジェットに渡す必要があることです。ウィジェットは現在、次のようにlayout/main.phpに表示されます。

 <?php 
    $this->widget('searchSidebar', array(
      'id' => 'searchSidebar',
    )); 
 ?>

クエリを再度やり直すことなく、コントローラーからこのワイドにデータを渡すにはどうすればよいですか?

4

1 に答える 1

3

dataProviderには、すでにすべてのデータが含まれています

$dataProvider->data
$dataProvider->getData()

メインレイアウトに配置するには、コントローラーに別の変数を作成できます

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
于 2013-03-12T00:47:21.883 に答える