[英]Yii2 - How to get the current username or name from Yii::$app->user?
[英]how to get and display username in another form field when user select name from dropdownlist in yii2?
當用戶在上面的下拉列表中選擇講師姓名時,我想以另一種文本輸入字段形式顯示講師用戶名。
這是我的下拉列表講師姓名的代碼
<?= $form->field($model, 'LecturerName')->dropDownList(
ArrayHelper::map(User::findAll(['category' => 'lecturer']),'fullname','fullname'),
['prompt'=>'Select Lecturer']
) ?>
這是我講師用戶名的代碼
<?= $form->field($model, 'LecUsername')->textInput(['maxlength' => true]); ?>
我想根據上面選擇的下拉列表獲取並顯示LecUsername。 LecUsername來自數據庫。
使用下拉菜單時,您需要綁定下拉菜單的change
事件,以將下拉列表中的值插入到輸入文本中。 為了確保您要為LecturerName
插入LecUsername
,您需要將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);
下拉菜單的更好方法是使用庫Kartik-v \\ select2並使用event 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());
}); }',
]
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.