Das Yii CGridView, wie ich es verwende

Yii CGridview Bild

In diesem Beitrag möchte ich einige Dinge zum Yii CGridView erläutern und meine Erfahrungen mit dem Yii CGridview darstellen.

In einigen Fällen gibt es Sonderfälle, wo man kein standardisiertes CGridView möchte. Beispielsweise bei der Auflistung einer URL oder eines E-Mail Links.

Standardfall

Wie es von Gii standardmäßig gemacht wird, wird ein Yii CGridView wie folgt erstellt:

1
2
3
4
5
6
7
8
9
10
11
<br />
$this->widget('zii.widgets.grid.CGridView', array(<br />
  'id'=>'beispiel-grid',<br />
  'dataProvider'=>$model->search(),<br />
  'filter'=>$model,<br />
  'columns'=>array(<br />
        'spalte1',<br />
        'spalte2',<br />
        'spalte3',<br />
  ),<br />
));<br />

CGridView weitere Berechnungen oder ein CGridView Link

Doch das Yii CGridView kann noch weitaus mehr. Zum Beispiel möchte ich vor der Ausgabe noch Berechnungen durchführen oder wie oben schon beschrieben einen Link generieren, so kann ich hier leider nicht einfach einen PHP-Code Schnipsel angeben. Allerdings wird durchaus PHP verarbeitet, wenn wir es in Anführungszeichen angeben. Eine Url oder eine Berechnung erstellen wir dann wie folgt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<br />
$this->widget('zii.widgets.grid.CGridView', array(<br />
  'id'=>'beispiel-grid',<br />
  'dataProvider'=>$model->search(),<br />
  'filter'=>$model,<br />
  'columns'=>array(<br />
        array(<br />
            'name'=>'link',<br />
            'type'=>'raw',<br />
            'value'=>'Chtml::link("Zur Webseite", array("$data->link"))',<br />
        ),<br />
        array(<br />
            'name'=>'betrag',<br />
            'type'=>'raw',<br />
            'value'=>'($data->betrag*1.19)',<br />
        ),<br />
        array(<br />
            'name'=>'link',<br />
            'value'=>'Chtml::link("Zur Webseite", array("$data->link"))',<br />
        ),<br />
  ),<br />
));<br />

Yii CGridView Filter – selbst erstellen

Das Yii CGridView erlaubt es uns auch, in der Filter Zeile eigene Filter zu definieren. So können wir, wie in dem folgenden Beispiel, die Filterzelle auch mit einem Dropdown-Feld füllen. Der Befehl CHtml::listData() erlaubt es uns die Daten an die Filterzelle so zu übergeben, dass daraus ein Dropdown-Feld entsteht. So können wir dann die Suche bzw. das Filtern auf die vorgegebenen Werte des Dropdown Menüs einschränken.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<br />
$this->widget('zii.widgets.grid.CGridView', array(<br />
  'id'=>'beispiel-grid',<br />
  'dataProvider'=>$model->search(),<br />
  'filter'=>$model,<br />
  'columns'=>array(<br />
        array(<br />
            'name'=>'link',<br />
            'type'=>'raw',<br />
            'filter'=>CHtml::listData(Benuzter::model()->links()->findAll(), 'url', 'name'),<br />
            'value'=>'Chtml::link("Zur Webseite", array("$data->link"))',<br />
        ),<br />
        array(<br />
            'name'=>'betrag',<br />
            'type'=>'raw',<br />
            'value'=>'($data->betrag*1.19)',<br />
        ),<br />
        array(<br />
            'name'=>'link',<br />
            'value'=>'Chtml::link("Zur Webseite", array("$data->link"))',<br />
        ),<br />
  ),<br />
));<br />

Yii CGridView Pagination

Wie die Pagination verändert und gesteuert werden kann, werde ich bei Gelegenheit in einem weiteren Artikel zeigen.

Sagt mir Eure Themen, die ich für euch in diesem Blog bearbeiten soll?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert