Задать вопрос
Контакты

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (3)

Лучшие ответы пользователя

Все ответы (3)
  • Как сделать динамическую подгрузку данных при выборе пункта из выпадающего списка формы в Yii2?

    @parazitl2 Автор вопроса
    Решил проблему как написал Станислав Казанин.

    Выпадающий список, при выборе пункта из которого будет обновляться поле на странице с данными пользователя (id списка например "useridfield") :
    <?php echo $form->field($model, 'user_id')->widget(Select2::classname(), [        
            'data' => ArrayHelper::map(User::find()->all(), 'id', 'username'),
            'language' => 'ru',
            'options' => ['placeholder' => 'Выберите пользователя ...', 'id' => 'useridfield', 'value' => Yii::$app->user->identity->getId(),],
            'pluginOptions' => [
                'allowClear' => true
            ],
        ])->label('Автор заявки'); ?>

    Сам блок на этой же странице, в котором обновляются данные пользователя (id поля, например, "newtry"):

    <div id="newtry">
            <?= $this->render('/user/_userdataview', [
                'model' => Yii::$app->user->identity,
            ]); ?>
    </div>

    А это скрипт (решил пока оставить его внизу страницы, потом можно вынести в отдельный файл), который выполняет всю данную работу:

    <?php 
    $script = <<< JS
       
    $('#useridfield').change(function(){
        $.ajax({
            type: "GET",
            url: "/basic_yii/web/user/showuserdata?user_id="+$(this).val(),
            success: function(data) {
                $("#newtry").html(data)
            }
        })
    });
            
    JS;
    $this->registerJs($script);
    ?>

    В скрипте $('#useridfield') - это id поля формы с выпадающим списком (указано в массиве options), $("#newtry") - это id специально отгороженного тегами div поля, которое полностью обновляется при клике на выпадающий список, а по адресу /basic_yii/web/user/showuserdata?user_id= лежит экшен контроллера:

    public function actionShowuserdata($user_id)
        {
            $model = \app\models\User::findIdentity($user_id);
                   
            return $this->renderPartial('_userdataview', [
                'model' => $model,
            ]);
        }


    Надеюсь, это кому-нибудь пригодится =)
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (6)