2015-11-11 14 views
6

Ich verwende Yii2 Framework und die GridView um Daten mit einem SearchModel, DataProvider und dem Filter der Grid View anzuzeigen. Ich benutze auch Pjax, um Paginierung und Bestellung mit Ajax zu erlauben. Funktioniert soweit gut.yii2 GridView Suchfelder außerhalb der Tabelle

Jetzt möchte ich ein Suchfeld einrichten, das nicht in der Kopfzeile der Tabelle ist. Es sieht nicht sehr gut aus, nur zwei von ihnen zu haben, bei den letzten Kolumnen. Das ist jetzt ein bisschen schwierig. Wie kann ich die Postdaten des Grids manipulieren? Gibt es eine einfache Lösung? Gibt es Beispiele oder Ideen, wie Sie das einrichten?

+0

erläutert http://www.yiiframework.com/doc-2.0/yii-grid-gridview.html#$filterSelector-detail das wird Ihnen sicherlich helfen –

Antwort

2

Zum Beispiel hinzufügen, habe ich nur ein Feld für Filter. Es ist ein Datumsbereich mit zwei getrennten Eingabe- und Kalender-Widgets.

In Ansicht:

<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

Ich weiß nicht, ob wir das gleiche müssen aber die Suchfelder zu platzieren, bevor der gridview Sie ‚filterPosition‘ => ‚header‘ in den gridview Eigenschaften

1

Was ich tue, ist die _search.php auf die Seite in Sicht hinzufügen, wo Rasteransicht ist und mit Hilfe der $searchModel der GridView dafür wird funktionieren.

Zum Beispiel mit der automatisch generierten Anzeigen von Dateien aus Gii CRUD, Kommentar- das Echos in dieser Linie

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

Dies wäre der einfachste Weg, ein Suchformular außerhalb des Gridview zu bekommen. Dies wird in der http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#separate-filter-form

Verwandte Themen