【问题标题】:Yii2: Is it possible to set visibile default value for an Autocomplete Widget?Yii2:是否可以为自动完成小部件设置可见默认值?
【发布时间】:2015-12-11 19:45:26
【问题描述】:

我在我的控制器上初始化了一个模型和它的一个属性

$model = new MyModel;
$model->internal_code = 'BAUBAU';

然后我填充一个适合自动完成的代码数组

$products = Product::find()
                ->select([
                        Product::tableName().'.id as id',
                        'internal_code as label',
                        'internal_code as value',
                    ])
                ->asArray()
                ->all();

然后我想使用自动完成来显示默认值并允许用户通过自动完成小部件选择更改它。

这是查看代码

echo $form->field($model, 'internal_code')
    ->widget(AutoComplete::classname(),[
        'clientOptions' => [
                'source'    => $products
            ]
        ])
    ->label('Internal code');

实际上小部件可以工作,用户可以数字字符并从自动完成缩小搜索的结果中进行选择。

但问题是即使设置了$model->internal_code,小部件在加载时也不会显示该值。 用户在屏幕上看不到默认值 ('BAUBAU')。我无法理解要填写的属性和/或客户端选项。

注意:我添加了jquery-ui 标签,因为这个 Yii2 小部件使用了 JqueryUI 的自动完成小部件

【问题讨论】:

  • @gamitg:案例和问题的扩展解释。我希望这已经足够了。问题很简单:如何在自动完成小部件中显示字段值。
  • 1. BAUBAU 是 $products 的一部分吗? 2. $products不应该是简单的字符串数组吗?

标签: jquery-ui autocomplete yii2


【解决方案1】:

您只需要设置value 属性。

像这样。

echo $form->field($model, 'internal_code')
    ->widget(AutoComplete::classname(),[
        'value' => (!empty($model->internal_code) ? $model->internal_code : ''),
        'clientOptions' => [
                'source'    => $products
         ]
 ])->label('Internal code');

【讨论】:

    【解决方案2】:

    您可以在选项数组中设置默认值,如下所示:

    'options' => [
                        'placeholder'=> 'Select...',
                        'class'=>'form-control',
                        'value' => (!empty($model->attribute) ? $model->attribute : ''),
                ],
    

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2014-10-15
      • 2021-10-26
      • 2021-07-22
      • 2023-03-16
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      相关资源
      最近更新 更多