2015-11-11 11 views
6

Sto utilizzando Yii2 Framework e GridView per visualizzare dati con un SearchModel, DataProvider e il filtro della vista griglia. Uso Pjax anche per consentire la paginazione e l'ordinamento con Ajax. Funziona bene finora.yii2 Campi di ricerca GridView all'esterno della tabella

Ora voglio impostare un campo di ricerca che non si trova nell'intestazione della tabella. Non sembra molto bello avere solo 2 di loro, nell'ultima colonna. Quindi questo è un po 'complicato ora. Come posso manipolare il Post Data della Grid? C'è una soluzione facile? Ci sono esempi o idee su come impostarlo?

+0

http://www.yiiframework.com/doc-2.0/yii-grid-gridview.html#$filterSelector-detail questo sicuramente ti aiuterà –

risposta

2

Per esempio, ho un solo campo per filtro. È un intervallo di date con due input e widget di calendario non funzionanti.

In considerazione:

<div class="col-md-4 col-md-offset-8"> 
      <?php echo $this->render('_filter', [ 
       'model' => $filterModel 
      ]); ?> 
     </div> 
     <div class="col-md-12"> 
      <?php Pjax::begin(['id' => 'order-statistics']); ?> 
      <?php echo GridView::widget([ 
       'dataProvider' => $dataProvider, 
       'filterSelector' => '#filter-form .js-date-value', 
       'showFooter'  => true, 
       'columns'  => [ 

In _filter.php:

$this->registerAssetBundle(DateRangePickerAsset::className()); 

<?php echo Html::beginTag('div', ['id' => 'filter-form']); ?> 
    <div class="input-group"> 
     <span class="input-group-addon js-date-calendar" title="<?php echo Yii::t('statistics', 'Select date'); ?>" 
       role="button" data-max-date="<?php echo date('Y-m-d', strtotime('+1 day')); ?>"> 
      <?php echo Html::icon('calendar', ['tag' => 'i']); ?> 
     </span> 
     <?php echo Html::activeTextInput($model, 'from', [ 
      'id'  => 'js-date-from', 
      'class' => 'form-control js-date-from js-date-value', 
      'readonly' => true 
     ]); ?> 
     <span class="input-group-addon js-date-remove" title="<?php echo Yii::t('statistics', 'Clear fields'); ?>" 
       role="button"> 
      <?php echo Html::icon('remove', ['tag' => 'i']); ?> 
     </span> 
     <?php echo Html::activeTextInput($model, 'to', [ 
      'id'  => 'js-date-to', 
      'class' => 'form-control js-date-to js-date-value', 
      'readonly' => true 
     ]); ?> 
    </div> 
<?php echo Html::endTag('div'); 
0

Non so se abbiamo bisogno lo stesso, ma per posizionare i campi di ricerca prima che il GridView si aggiungono 'filterPosition' => 'intestazione' nelle proprietà GridView

1

Quello che faccio è aggiungere il _search.php nella visualizzazione alla pagina in cui è vista a griglia e utilizzando il $searchModel del GridView per quello funzionerà.

Ad esempio, utilizzando l'auto generati visualizzare i file dal Gii CRUD, rimuovere l'eco di questa linea

<?php // echo $this->render('_search', ['model' => $searchModel]); ?> 

Questo sarebbe il modo più semplice per avere un modulo di ricerca al di fuori del GridView. Questo è spiegato nello http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#separate-filter-form

Problemi correlati