2017-07-25 80 views
2

以下代碼不會拋出錯誤,但它是完全無效的,分別是多餘的。 JQuery沒有過濾任何東西!任何想法如何解決這一問題? 這裏是代碼:Kartik-Widget GridView過濾器TYPEAHEAD無效

 [ 
 
      'attribute' => 'name', 
 
      'label' => 'Land', 
 
      'value' => function($model) { 
 
       if ($model->name) { 
 
        return $model->name; 
 
       } else { 
 
        return NULL; 
 
       } 
 
      }, 
 
      'filterType' => GridView::FILTER_TYPEAHEAD, 
 
      'filterWidgetOptions' => [ 
 
       'pluginOptions' => ['highlight' => true], 
 
       //'dataset' => [['local' => array_values(\app\models\Country::find()->orderBy('name')->asArray()->one())] 
 
       'dataset' => [['local' => array_values(ArrayHelper::map(\app\models\Country::find()->all(), 'id', 'name'))] 
 
       ]], 
 
      'filterInputOptions' => ['placeholder' => 'JQuery will filter...'], 
 
      'format' => 'raw' 
 
     ],

這裏是

$ausgabe_ = array(array_values(ArrayHelper::map(\app\models\Country::find()->all(), 'id', 'name'))); 

E:\xampp\htdocs\Yii-WSL\views\country\index.php:145: 
 
array (size=1) 
 
    0 => 
 
    array (size=25) 
 
     0 => string 'Arabische Emirate' (length=17) 
 
     1 => string 'Algerien' (length=8) 
 
     2 => string 'Australia' (length=9) 
 
     3 => string 'Belgien' (length=7) 
 
     4 => string 'Brasilien' (length=9) 
 
     5 => string 'Canada' (length=6) 
 
     6 => string 'Schweiz' (length=7) 
 
     7 => string 'China' (length=5) 
 
     8 => string 'Zypern' (length=6) 
 
     9 => string 'Germany' (length=7) 
 
     10 => string 'Westsahara' (length=10) 
 
     11 => string 'France' (length=6) 
 
     12 => string 'United Kingdom' (length=14) 
 
     13 => string 'Ungarn' (length=6) 
 
     14 => string 'India' (length=5) 
 
     15 => string 'Laos' (length=4) 
 
     16 => string 'Russia' (length=6) 
 
     17 => string 'Sudan' (length=5) 
 
     18 => string 'Turkmenistan' (length=12) 
 
     19 => string 'Ukraine' (length=7) 
 
     20 => string 'Uganda' (length=6) 
 
     21 => string 'United States' (length=13) 
 
     22 => string 'Vatikanstadt' (length=12) 
 
     23 => string 'Vietnam' (length=7) 
 
     24 => string 'Südafrika' (length=10)

任何進一步的想法的var_dump,如何解決這一問題? PS:如果我嘗試這樣.....:

'dataset' => [ 
    ['local' => array_values([ArrayHelper::map(\app\models\Country::find()->orderBy('name')->asArray()->all(), 'id', 'name ')])], 
    ] 

....結果

$ausgabe_ = array(array_values(ArrayHelper::map(Country::find()->orderBy('name')->asArray()->all(), 'id', 'name '))); 
var_dump($ausgabe_); 

是這樣的:

E:\xampp\htdocs\Yii-WSL\views\country\index.php:146: 
 
array (size=1) 
 
    0 => 
 
    array (size=25) 
 
     0 => null 
 
     1 => null 
 
     2 => null 
 
     3 => null 
 
     4 => null 
 
     5 => null 
 
     6 => null 
 
     7 => null 
 
     8 => null 
 
     9 => null 
 
     10 => null 
 
     11 => null 
 
     12 => null 
 
     13 => null 
 
     14 => null 
 
     15 => null 
 
     16 => null 
 
     17 => null 
 
     18 => null 
 
     19 => null 
 
     20 => null 
 
     21 => null 
 
     22 => null 
 
     23 => null 
 
     24 => null
沒有什麼幫助解決這個問題。更多的想法?

回答

1

值得說明的陣列必須與integer類型索引和不能有缺號(索引)(例如,0; 1; 2; 3是好的,但0; 1; 3; 4是不是因爲索引2丟失)。

唯一有效的結構(如實施例):

array(4) { 
    [0]=> 
    string(5) "Alpha" 
    [1]=> 
    string(4) "Beta" 
    [2]=> 
    string(5) "Gamma" 
    [3]=> 
    string(5) "Delta" 
} 

你的陣列是無效的:

  1. 第一(也是唯一的)元素是0,其中包含其它陣列。它不可能是這樣的;
  2. 該較大的數組有混合索引(第一段中的讀取要求);
  3. null值不被接受。

什麼可以解決你的問題是,如果你使用array_values

'dataset' => [ 
    ['local' => array_values([ArrayHelper::map(\app\models\Country::find()->orderBy('name')->asArray()->all(), 'id', 'name ')])], 
], 
+0

我沒有缺號。所以,你的嚮導沒有幫助,解決問題! – tklustig

+0

我需要更多信息:1.「不活動」意味着您可以輸入,但輸入第一個字母/數字時不顯示任何內容? 2.你可以在這裏寫下'app \ models \ Country :: find() - > orderBy('name') - > asArray() - > all()'的值(通過'var_dump') –

+0

1.的確如此! 2.見上面的補充 – tklustig