<?= date('Y-m-d H:i:s',(new DateTime())->getTimestamp()); ?> //тестовый код для отслеживания обновления областей страницы
<?php Pjax::begin(); ?>
<?php $form = ActiveForm::begin(['options' => ['data-pjax' => true]]); ?>
<?= $form->field($model, 'field1')
->dropDownList(\yii\helpers\ArrayHelper::map(User::find()->all(), 'id', 'username')); ?>
<?php echo Html::submitButton('Пробуем', ['class' => 'btn btn-info']) ?>
<?= date('Y-m-d H:i:s',(new DateTime())->getTimestamp()); ?>
<?php ActiveForm::end(); ?>
<?php if ($model->field1): ?>
//выводимые данные
<div class="row">
<div class="col-lg-4">
<?= DetailView::widget([
'model' => User::findIdentity($model->field1),
'options' => [
'class' => 'table table-no-border table-condensed',
],
'attributes' => [
[
'attribute' => 'username',
'label' => 'Логин',
],
[
'attribute' => 'building',
'label' => 'Корпус',
],
[
'attribute' => 'room',
'label' => 'Кабинет',
],
],
]); ?>
</div>
</div>
<?php endif; ?>
<?php Pjax::end();?>
<?= $form->field($model, 'field1')
->dropDownList(\yii\helpers\ArrayHelper::map(User::find()->all(), 'id', 'username'), ['onchange' => 'this.form.submit()']); ?>
<?php $form = ActiveForm::begin([
'id' => 'get_users', //Добавляем ID для отслеживания в JS
'action' => \yii\helpers\Url::to(['ВАШ ЭКШН']) //Добавляем адрес, к которому пойдет запрос, если он отличается от текущего местоположения
]); ?>
<?= $form->field($model, 'field1')->dropDownList(\yii\helpers\ArrayHelper::map(User::find()->all(), 'id', 'username')); ?>
<?= Html::submitButton('Пробуем', ['class' => 'btn btn-info', 'id'=>'get_users_submit']); ?>
<?php ActiveForm::end(); ?>
<div id="rendered_user"></div>
public function actionYouraction()
{
$request = Yii::$app->request;
if($request->isAjax){
Yii::$app->response->format = Response::FORMAT_JSON; //Если запрос аяксовый,то отвечаем JSON-ом
//Тут разбираете полученный запрос, пишете нужную логику, подтягиваете модель пользователя
return ['content'=>$this->renderAjax('_userdata', [ 'model' => $model])]; //Возвращаем JSON-массив в виде вьюшки, которой передаем модель пользователя или любые другие нужные данные
}
}
$(document).on('click' , '#get_users_submit' , function(e) {
e.preventDefault();
var target= $('#rendered_user'), //В этот блок выводим полученные данные
form = $('#get_users'), //Выбираем нашу форму
url = form.attr('action'), //Узнаем url для отправки
data = form.serializeArray(); //Сериализуем форму
$.ajax({
url: url,
method: 'POST',
data: data,
error: function (response) {
//Если ошибка запроса, то что-то делаем
},
success: function (response) {
//Если запрос прошел, то что-то делаем
//Контроллер вернет данные в переменную response, разберите её, выведите что нужно
console.log(response);
target.html(response.content);
},
});
});
<?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('Автор заявки'); ?>
<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,
]);
}