Tenho o seguinte ESelect2 na minha view, o array é criado com os dados pelo ajax, mas nada aparece no ESelect2.
–View–
echo CHtml::hiddenField('idDestinatario');
$this->widget('ext.eselect2.ESelect2', array(
'selector' => '#idDestinatario',
'attribute' => 'idDestinatario',
'model' => $model,
'value' => $model->idDestinatario,
// 'htmlOptions'=>array(
// 'multiple'=>true,//can put to false to only allow one value
// ),
'options' => array(
'allowClear' => true,
'placeholder' => 'Selecione pelo menos um Usuário',
'minimumInputLength' => 3,
'ajax' => array(
'url' => Yii::app()->createUrl('usuario/usuarios'),
'type' => 'POST',
'dataType' => 'json',
'quietMillis' => 100,
'data' => 'js: function(text,page) {
return {
stringSearch: text,
};
}',
'results' => 'js: function(data){
return {
results :
data.map(function(item) {
return {
id : item.id,
nome : item.nome
};
}
)};
}',
'formatResult' => 'js:function(usuario){
return usuario.id + " " + usuario.text;
}',
'formatSelection' => 'js: function(usuario) {
return usuario.text;
}',
),
),
));
–Controller–
public function actionUsuarios()
{
$stringSearch = $_POST['stringSearch'];
echo CHtml::tag('option', array('value' => ''), 'Selecione pelo menos um Usuário') . PHP_EOL;
if (strlen($stringSearch) >= 3) {
$usuarios = Usuario::model()->findAll(array('condition' => 'id=\'' . $stringSearch . '\' or nome=\'' . $stringSearch . '\'', 'order' => 'tipo, nome'));
$usuariosArray = CHtml::listData($usuarios, 'id', 'nome');
echo json_encode($usuariosArray);
}
}