0

这个小部件输入文本并通过下拉列表给出搜索结果。问题是如何自定义它?是否有任何形式或某些属性,我可以编写一些 html 模板来获得答案,如带有图像等的时尚超链接?

不幸的是,这段代码不起作用。

这是布局内的视图

 echo NavX::widget([
            'options' => ['class' => 'navbar-nav navbar-right'],
            'encodeLabels' => false, //вот эта строка
            'items' =>
                [
            ['label' => Typeahead::widget([
                'name' => 'country_1',
                'options' => ['placeholder' => 'Filter as you type ...'],
                'scrollable' => true,
                'pluginOptions' => ['highlight'=>true],
                'dataset' => [
                    [
                        'prefetch' => Url::to(['site/search']),
                        'limit' => 10
                    ]
                ]
            ])],
['label' => 'About', 'url' => ['/site/about']],
 ]
        ]);
        NavBar::end();

和控制器

    public function actionSearch()
    {
// var_dump('TTTTTT'); die;
        $searchModel = ProductName::find()->asArray()->all();;
      //  echo $searchModel;

        return \yii\helpers\Json::encode($searchModel);
    //    echo 'test';
    }

我试过不同的,这也不起作用

        public function actionSearch()
        {
        foreach (ProductName::find()->each() as $search_products) {
            $search_products_array[$search_products->nameID] = $search_products->name;
        }

        return \yii\helpers\Json::encode( $search_products_array);
}

如您所见,我在控制器中尝试了不同的选项,导致搜索没有响应关键输入。但是控制器没问题,因为如果我手动转到它的 url,它会很好地响应。

4

1 回答 1

1

我以前从未使用过这个小部件。但是通过阅读文档,您似乎可以通过修改suggestionunder来自定义呈现建议template的方式dataset

建议 - 用于呈现单个建议。如果设置,这必须是一个预编译的模板。关联的建议对象将用作上下文。默认为包装在 ap 标签中的 displayKey 的值,即<p>{{value}}</p>. 该小部件包括默认加载的 Handlebars 模板编译器。

我猜{{url}}和来自小部件的数据。您可能需要验证这一点{{name}}$template

$template = '<div><img src="{{url}}"><p>{{name}}</p></div>';
 echo Typeahead::widget([
      // other options
      'dataset' => [
          [
              'prefetch' => Url::to(['controller/action']),
              'templates' => [
                 'notFound' => '<div class="text-danger" style="padding:0 8px">Unable to find repositories for selected query.</div>',
                 'suggestion' => new JsExpression("Handlebars.compile('{$template}')")
              ]
          ]
      ]
]);
于 2017-07-02T05:33:28.140 回答