2016-04-01 25 views
0

Bazı verileri görüntülemek için özel bir sorgu kullanıyorum ve bu verileri dataProvider'da kaydettiğim bir proje üzerinde çalışıyorum. Dosyayı görüntülemek ve Listview kullanarak görüntülemek için bu dataProvider iletiliyor. Sadece o Listview için search çubuğu uygulamak isteyen Liste görünümü ve özel dataprovider araması yii2

<nav class="navbar navbar-fixed-top"> 
    <form class="navbar-form navbar-left search-form" action=""> 
     <div class="form-group"><input type="text" class="form-control app-search" placeholder="Search"> 
     </div> 
    </form> 
</nav> 

<div class="panel-group" id="accordion"> 
<?= \yii\widgets\ListView::widget([ 
    'dataProvider' => $dataProvider, 
    'itemView' => 'eventlistview', 
    'layout' => "{items}", 
]); ?> 

</div> 

aşağıda gibi. SearchModel kullanmıyorum, bu yüzden bunu nasıl yapabilirim diye kafam karıştı mı?

İşte benim action kod. i event ait title kullanarak arama yapabilirsiniz bilmiyorum bu yüzden burada herhangi bir arama modeli kullanılarak değilim çünkü

public function actionEvent() 
{ 
    $this->layout = 'app'; 
    if(isset($_GET['latitude']) && isset($_GET['longitude'])){ 
      $query = new Query(); 
      $query ->select(['e.*','COUNT(d.event_id) as checkins' ,'o.clubname',new Expression("case when c.id is not null then 1 else 0 end is_checkedin")]) 
       ->from('event e') 
       ->innerJoin('organiser o', 'e.organiser_id = o.organiser_id') 
       ->leftJoin('checkin c', 'c.event_id = e.id and c.user_id ='.$_GET['user_id']) 
       ->leftJoin('checkin d', 'd.event_id = e.id') 
       ->where('e.interest_id IN 
          (SELECT area_intrest.id FROM area_intrest, user WHERE FIND_IN_SET(area_intrest.id,user.area_intrest) AND user.id='.$_GET['user_id'].')') 
       ->groupBy('e.id'); 

      $dataProvider = new ActiveDataProvider([ 
       'query' => $query, 

      ]); 
     } 

    return $this->render('event' ,['dataProvider' => $dataProvider]); 
} 

Sadece karıştı.

+0

İki şey ... 1) tüm ilgili eylem kodu gösterin ... .2) Filtreniz için sorgu isteğini görünümünüzden nasıl gerçekleştirirsiniz? – scaisEdge

+0

@scaisEtkinlik kodunun var olduğunu doğrulayın. ve 'GET' kullanarak url'den gerekli verileri aldım. Ben herhangi bir filtre kullanmıyorum. 'Eventlistview' kullanıyorum düzeninin kodunu ekleyebilirim, ancak bu sorunu nasıl çözeceğimi bilmiyorum. –

+0

$ _ GET ['latitude'] ve $ _ GET ['longitude'] öğelerini ve nereden geldiklerini açıklayabilir misiniz? ... çünkü sorguda görüntüledikleri için bu alanlara herhangi bir başvuru görmüyorlar – scaisEdge

cevap

1

görünümünde size ActionEvent değerini

<?php 
     $form = ActiveForm::begin(['id' => 'my-form', 
      'method'=>'get', 
      'action' => Url::to('your-controller/event')]); 
?> 
     <input type="text" class="form-control app-search" name="my_search" placeholder="Search"> 
<?= Html::submitButton('search') ?> 
<?php ActiveForm::end(); ?> 

göndermek için aktif bir formu kullanabilirsiniz yapabilirsiniz

$this->layout = 'app'; 
if (isset($_GET('my_search')) { 
    // perform what you nedd .. 
} 
if(isset($_GET['latitude']) && isset($_GET['longitude'])){