2017-07-25 64 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