2013-03-11 7 views
5

मैं एक खोज पृष्ठ है कि समारोह प्रस्तुत करने के लिए डेटा गुजरता है:Yii: एक नियंत्रक से एक विजेट के लिए डेटा पासिंग?

public function actionIndex() { 

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

समस्या यह है, मैं भी यहाँ से एक विजेट है कि साइडबार में दिखाई देने के लिए इस डेटा पारित करने के लिए की जरूरत है। विजेट वर्तमान में तो जैसे लेआउट/main.php में प्रदर्शित होता है:

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

मैं कैसे क्वेरी फिर से फिर से बनाए बिना नियंत्रक से इस widet करने के लिए डेटा गुजर के बारे में जाना होगा?

+0

शायद आप Yii घटनाओं पर दिखाई दे सकता है। इस तरह लगता है आप प्राप्त कर सकते हैं कि आप कहां जाना चाहते हैं: http://www.yiiframework.com/forum/index.php/topic/24316-using-yii-events/ –

उत्तर

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 
संबंधित मुद्दे