如何将两列连接成 yii2 中的自动完成字段?
How to concatenate two columns into an autocomplete field in yii2?
我的视图中有一个自动完成字段,其代码如下
<?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.
}")],
]);
?>
自动完成工作正常,它显示所有 'members' 的名字。
但是可能有很多名字相似的人,所以我想要的是连接 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...']);
?>
我如何使用自动完成小部件执行此操作?
试试这个方法
$data = Members::find()
->select(['concat(first_name,last_name) as value', 'first_name as label','id as id'])
->asArray()
->all();
如果您需要在 2 个字段之间 space,请使用:
$data = Members::find()
->select(['concat(first_name, SPACE(1), last_name) as name', 'first_name as label','id as id'])
->asArray()
->all();
SPACE() 方法将生成 space 根据您输入的特定数字,为您 :D
我的视图中有一个自动完成字段,其代码如下
<?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.
}")],
]);
?>
自动完成工作正常,它显示所有 'members' 的名字。 但是可能有很多名字相似的人,所以我想要的是连接 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...']);
?>
我如何使用自动完成小部件执行此操作?
试试这个方法
$data = Members::find()
->select(['concat(first_name,last_name) as value', 'first_name as label','id as id'])
->asArray()
->all();
如果您需要在 2 个字段之间 space,请使用:
$data = Members::find()
->select(['concat(first_name, SPACE(1), last_name) as name', 'first_name as label','id as id'])
->asArray()
->all();
SPACE() 方法将生成 space 根据您输入的特定数字,为您 :D