Автозаполнение поля textfield

Ищем по ФИО и логину пользователя. В примере работает шаблон вида: «fio, (login)». Например: Василий Пупкин (vaseok)

Само текстовое поле где будет работать автозаполнение:

<?php echo CHtml::textfield('logins_and_fios','',array('autocomplete'=>'off','data-provide'=>'typeahead','data-items'=>4,'data-source'=>'["Вася Пупкин (Vaseok)","Стас Михайлов (fool)","Александр Васильев, (ruleezz)"]','placeholder'=>'ФИО, (Логин)'));?>

Далее, чтобы подставить нужный id пользователя в нужное поле, добавим скрипт:

<script>
 $('#logins_and_fios').change(function(){
 var fiologin = $('#logins_and_fios').val();
 $.ajax({
 type: 'POST',
 data: {'fiologin':fiologin},
 url: '<?php echo Yii::app()->createAbsoluteUrl("/admin/blockedUsers/getIdByFioLogin"); ?>',
 success: function(data) {
 if (parseInt(data)>0){
 $('#BlockedUsers_blocked_user').val(data);
 }else{
 alert('Ошибка, попробуйте еще раз ввести автора.');
 }
 },
 error: function(){
 alert('Ошибка, попробуйте еще раз ввести автора.');
 }
 });
 });
</script>

А в админ/контроллере создаем функцию в данном случае getIdByFioLogin. Функция принимает строку, разбивает ее, находит нужного пользователя и возвращает его id иначе возвращает 0.


public function actionGetIdByFioLogin(){
$fiologin = $_POST['fiologin'];

$data = explode(',',$fiologin);

$fio = $data[0];
$fio = trim($fio);
$login = $data[1];
$login = str_replace('(','',$login);
$login = str_replace(')','',$login);
$login = trim($login);
$user = Users::model()->find("user_fio ='".$fio."' and user_login='".$login."'");
if ($user){
echo $user->user_id;
}else{
echo 0;
}

return;
}

Добавить комментарий