GridView中的Yii2自动完成

时间:2017-02-17 07:36:19

标签: gridview autocomplete yii2

我通过作曲家安装了yii2-jui。

我想在2个不同的模型中使用AutoComplete,一次在母亲中,一次在外国模型中。这是关于Lands。

现在在母亲(观点/土地/指数):

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
        ],
    ]),
],

问题是,它不起作用,因为顺序当然键不是从零向上。一旦我重置了密钥,它就会开始工作。现在在母亲这不是“真正”的问题(实际上它仍然是一个问题),但是一旦我想在“外国”模型中使用它,我必须实际搜索一个键(id),而不是土地的名称,它不会工作。我错过了什么?你能指点我正确的方向吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

我已经明白了:

在母亲看来:

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(),
        ],
    ]),
],

在外国观点:

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(),
        ],
    ]),
],