How to use an id/name array in ThTypeAhead

Hi all

I’m trying to use TbTypeAhead widget (from YiiStrap extension) to select user name from DB table.

The problem is in the “source” attribute. Using an array (returned by the “fullList” function) with id/name couples, the widget doesn’t run; using an array with values only, as shown below, it runs, but I can’t get the id.


    $this->widget('bootstrap.widgets.TbTypeAhead', array(

        'name' => 'usersel',

        'source' => array_values(Users::fullList()),

        'items' => 12,

        'htmlOptions' => array(

            'prepend' => TbHtml::icon(TbHtml::ICON_USER),

            'placeholder' => 'write user's name'

        ),

    ));



Looking in forum, I found this, but no difference:




'matcher' => "js:function(item) {return ~item.toLowerCase().indexOf(this.query.toLowerCase());}",



Can someone helps me to get user id instead of user name? Thanks

usage is like this





$this->widget('bootstrap.widgets.TbTypeahead', array(

    'model'     => $model,  // INSTANCE OF MODEL 'User'

    'attribute' => 'state', // ATTRIBUTE

    'options'=>array(

        'name'=>'demo-typeahead',

        'source'=>array(

        'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',

        'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia',

        'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa',

        'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland',

        'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri',

        'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey',

        'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio',

        'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina',

        'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',

        'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'),

        'items'=>4,

        'matcher'=>"js:function(item) {return ~item.toLowerCase().indexOf(this.query.toLowerCase());}",

        )

    )

);




$this->widget('bootstrap.widgets.TbTypeahead', array(

    'name'     => 'your-name-for-the-widget',  // NAME

    'options'=>array(

        'name'=>'demo-typeahead',

        'source'=>array(

        'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',

        'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia',

        'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa',

        'Kansas', 'Kentucky', 'Louisiana', 'Maine', 'Maryland',

        'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri',

        'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey',

        'New Mexico', 'New York', 'North Dakota', 'North Carolina', 'Ohio',

        'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina',

        'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',

        'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'),

        'items'=>4,

        'matcher'=>"js:function(item) {return ~item.toLowerCase().indexOf(this.query.toLowerCase());}",

        )

    )

);



Yes, I already see this, but it doesn’t solve the problem.

Do you say there is no way to do what I need?