2013-03-11 13 views
5

Mam stronę wyszukiwania, który przekazuje dane do funkcji render:YII: Przekazywanie danych do widgetu ze sterownika?

public function actionIndex() { 

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

Problem polega na tym, ja też trzeba przekazać te dane stąd do widgetu, który pojawia się w pasku bocznym. Widget jest aktualnie wyświetlany w układzie/main.php tak:

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

Jak bym go o przekazywanie danych do tego widet ze sterownika bez konieczności ponownego przerobić zapytanie?

+0

Może mógłby wyglądać na imprezach Yii. Wygląda na to, że może Cię tam, gdzie chcesz: http://www.yiiframework.com/forum/index.php/topic/24316-using-yii-events/ –

Odpowiedz

3

dataProvider ma już wszystkie dane zawarte w

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

aby umieścić go w głównym układzie można utworzyć kolejną zmienną w kontrolerze

class Controller extends CController 
{ 
    public $data_exchange=''; 
    ... 
} 

To będzie łatwo manipulować wszędzie kod z numerem $this->data_exchange podobnym do breadcrumbs w głównym układzie roboczym

$this->widget('searchSidebar', array(
    'id' => 'searchSidebar', 
    'data' => $this->data_exchange 
    /* where $this refer to any class which extends Controller */ 
)); 

W kodzie widoku określić swoje dane jak:

$this->data_exchange = $dataProvider->data 
Powiązane problemy