我的视图中有一个自动完成字段,其代码如下
<?php
$data = Members::find()
->select(['first_name as value', 'first_name as label','id as id'])
->asArray()
->all();
echo 'Name' .'<br>';
echo AutoComplete::widget([
'name' => 'member_name',
'clientOptions' => [
'source' => $data,
'minLength'=>'3',
'autoFill'=>true,
'select' => new JsExpression("function( event, ui ) {
$('#receipt-member_id').val(ui.item.id);//#receipt-member_id is the id of hiddenInput.
}")],
]);
?>
自动完成正常,它会显示所有&#39;成员的名字。 但是可能会有许多名字相似的人,所以我想要的是连接first_name和last_name。在正常的下拉菜单中,可以按照以下方式完成
<?php
$models1 = Members::find()->all();
$data = array();
foreach ($models1 as $model1)
$data[$model1->id] = $model1->first_name . ' '. $model1->last_name;
echo $form->field($model, 'member_id')->dropDownList(
$data,
['prompt'=>'Select...']);
?>
如何使用自动完成小部件执行此操作?
答案 0 :(得分:4)
试试这种方式
$data = Members::find()
->select(['concat(first_name,last_name) as value', 'first_name as label','id as id'])
->asArray()
->all();
答案 1 :(得分:0)
如果需要2个字段之间的空格,请使用以下方法:
$data = Members::find()
->select(['concat(first_name, SPACE(1), last_name) as name', 'first_name as label','id as id'])
->asArray()
->all();
SPACE()方法将根据您输入的特定数字生成空格:D