2017-02-17 10 views
0

Ich habe yii2-jui via Composer installiert.Yii2 AutoComplete in GridView

Ich möchte AutoComplete in 2 verschiedenen Modellen verwenden, einmal in Mutter, einmal in einem fremden Modell. Es geht um Länder.

Jetzt in Mutter (views/Land/index):

use yii\jui\AutoComplete; 
use app\models\Land; 

[ 
    'attribute' => 'name', 
    'filter' => AutoComplete::widget([ 
     'model' => $searchModel, 
     'attribute' => 'name', 
     'clientOptions' => [ 
      'source' => ArrayHelper::map(Land::find()->select('id, name')->orderBy('name')->all(), 'id', 'name'), 
      'autoFill' => true, 
      'minLength' => 2 
     ], 
    ]), 
], 

Das Problem ist, dass es nicht funktioniert, weil die orderBy natürlich die Tasten sind nicht von Null aufwärts. Sobald ich Schlüssel zurücksetze, fängt es an zu arbeiten. Nun in der Mutter ist es nicht "wirklich" ein Problem (eigentlich ist es immer noch ein Problem), aber sobald ich es in einem "fremden" Modell verwenden will, wo ich eigentlich nach einem Schlüssel (id) suchen muss, statt der Name des Landes, es wird nicht funktionieren. Was vermisse ich? Können Sie mir bitte die richtige Richtung zeigen? Danke vielmals!

Antwort

0

Ich habe es herausgefunden:

in Mutter Ansicht:

use yii\jui\AutoComplete; 
use app\models\Land; 

[ 
    'attribute' => 'name', 
    'filter' => AutoComplete::widget([ 
     'model' => $searchModel, 
     'attribute' => 'name', 
     'clientOptions' => [ 
      'source' => Land::find()->select(['name AS value', 'name AS label'])->orderBy('name')->asArray()->all(), 
     ], 
    ]), 
], 

in fremden Blick:

use yii\jui\AutoComplete; 
use app\models\Land; 

[ 
    'attribute' => 'land_id', 
    'filter' => AutoComplete::widget([ 
     'model' => $searchModel, 
     'attribute' => 'land_id', 
     'clientOptions' => [ 
      'source' => Land::find()->select(['id AS value', 'name AS label'])->orderBy('name')->asArray()->all(), 
     ], 
    ]), 
],