как получить и отобразить имя пользователя в другом поле формы, когда пользователь выбирает имя из выпадающего списка в yii2?

Я хочу отобразить имя пользователя лектора в другой форме ввода текста, когда пользователь выбирает имя лектора в раскрывающемся списке выше.это моя форма

это мой код для выпадающего списка имени лектора

<?= $form->field($model, 'LecturerName')->dropDownList(
ArrayHelper::map(User::findAll(['category' => 'lecturer']),'fullname','fullname'),
['prompt'=>'Select Lecturer']
) ?>

это мой код для имени пользователя лектора

<?= $form->field($model, 'LecUsername')->textInput(['maxlength' => true]); ?>

Я хочу получить и отобразить имя LecUser на основе выбранного раскрывающегося списка выше. имя пользователя LecUser из базы данных.

0

Решение

Поскольку вы используете раскрывающийся список, вам необходимо связать change событие для раскрывающегося списка для вставки значения из раскрывающегося списка во входной текст. И чтобы убедиться, что вы вставляете LecUsername для LecturerName вам нужно иметь LecUsername как значение для раскрывающегося списка, означает, что раскрывающиеся данные должны иметь username поле в качестве индекса, в настоящее время вы используете fullname как индекс и значение, так что измените код в соответствии с именем поля, которое у вас есть для имени пользователя, я предполагаю, что это username для примера.

ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname')

так что ваш выпадающий код будет выглядеть

<?= $form->field($model, 'LecturerName')->dropDownList(
ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname'),
['prompt'=>'Select Lecturer']
) ?>

затем добавьте ниже в верхней части вашего файла представления, где у вас есть форма

$ddId=Html::getInputId($model, 'LecturerName');
$inputId=Html::getInputId($model, 'LecUsername');

$js = <<< JS
$(document).ready(function(){
$("#{$ddId}").on('change',function(e){
$("#{$inputId}").val($(this).val());
});
});
JS;
$this->registerJs($js, \yii\web\View::POS_READY);

Лучший способ для выпадающих — использовать библиотеку Картик-v \ Выбор2 и использовать событие pluginEvents возможность указать событие select2:select, ваш код должен выглядеть ниже в этом случае.

// Usage with ActiveForm and model
echo $form->field($model, 'LecturerName')->widget(Select2::classname(), [
'data' => ArrayHelper::map(User::findAll(['category' => 'lecturer']),'username','fullname'),
'options' => ['placeholder' => 'Select Lecturer'],
'pluginOptions' => [
'allowClear' => true
],
'pluginEvents'=>[
"select2:select" => 'function() { $("#{$ddId}").on('change',function(e){
$("#{$inputId}").val($(this).val());
}); }',
]
]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector