Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: Yii, Yii2
Войти
Регистрация
Восстановить пароль
 
Саня-нн
2 / 2 / 1
Регистрация: 17.12.2017
Сообщений: 39
1

Хочу разобраться с выпадающим списком

17.12.2017, 15:10. Просмотров 254. Ответов 4
Метки нет (Все метки)

Всем доброго дня и хорошего настроения. У меня такая задача:
Есть несколько контроллеров и представлений. Для каждого контроллера используется свой шаблон, но главное меню у всех одно. Его я вынес в виджет и вставляю в каждый шаблон. В этом меню я и хочу добавить что-то, чтобы позволило реализовать следующее:
Есть доп. поле active_city_id в таблице users, в котором храниться id текущего города. Надо реализовать либо меню, либо выпадающий список который позволил бы зарегистрированному пользователю менять текущий город, оставаясь на той же странице сайта. Подумал реализовать через dropdown меню, к примеру вывести список доступных городов, но что указывать в ссылках каждого пункта они все одинаковые получаются, только id разное, которое надо запомнить. Как мне изменить поле active_city_id текущего юзера на то, что он выбрал без перехода на другую страницу?
Второй вариант сделать простым списком, но при вставке в виджет главного меню, yii2 ругается на $model

PHP
1
2
3
4
5
6
7
8
9
10
$form = ActiveForm::begin(); 
echo $form->field($model, 'dropdownList')
    ->dropDownList([
        '1' => 'Город 1',
        '2' => 'Город 2',
        '3' => 'Город 3',
    ]);
echo Html::submitButton('Send', ['class' => 'btn btn-success']) 
 
ActiveForm::end()
почему? ведь $model - это я понимаю текущая модель? Или он в шаблоне еще ее не знает? Всю голову сломал. Подскажите, плиз, направьте на путь правильный.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2017, 15:10
Ответы с готовыми решениями:

Yii поле с выпадающим списком и с возможностью ввода с клавиатуры
Подскажите, как сделать в форме поле с выпадающим списком и с возможностью...

Функции с выпадающим списком
Есть база mysql "users" CREATE TABLE IF NOT EXISTS `users` ( `userid`...

Edit с выпадающим списком
Как сделать edit с выпадающим списком ?

Кнопка с выпадающим списком
Подскажите каким элементом можно реализовать такую штуку (как на скринах). Она...

Поиск с выпадающим списком
Нажимаю на кнопку на форме появляется окно, где я ввожу ФИО клиента и потом...

4
ytf
231 / 253 / 183
Регистрация: 15.08.2017
Сообщений: 1,468
18.12.2017, 12:27 2
если у тебя не получается программировать на yii, программируй без yii
0
FloppyDisc
Особый статус
600 / 204 / 158
Регистрация: 18.11.2015
Сообщений: 1,042
18.12.2017, 19:39 3
Цитата Сообщение от Саня-нн Посмотреть сообщение
без перехода на другую страницу?
pajax

Цитата Сообщение от Саня-нн Посмотреть сообщение
Второй вариант сделать простым списком, но при вставке в виджет главного меню, yii2 ругается на $model
Как ругается, я так понимаю, если это шаблон, точнее ее часть то она подгружается раньше контента?
1
Саня-нн
2 / 2 / 1
Регистрация: 17.12.2017
Сообщений: 39
18.12.2017, 23:09  [ТС] 4
сделал с помощью pjax, но теперь обновляется только со второго раза. Уже закипел.
вот шаблон mainmenu:
.....//там всякие подключения use, их я пропустил

Pjax::begin();
... тут выкинул кусок, т.к. тут получение параметров для запроса
....и заполнение текущей фирмы в переменной $firma

$query=(new \yii\db\Query());
$mymodel=$query->select('id, firmname')->from('spr_firms')->where('adminid=:id', [':id' => $adminid])-
>orderBy('firmname')->all();

if ($mymodel) {
$menuItemsFirmdown =[];
//формирование подменю
foreach ($mymodel as $m){
$menuItemsFirmdown[]=['label' => $m['firmname'], 'url'=>Yii::$app->urlManager->createUrl(['/setcurrfirma/setactivefirm', 'id' => $m['id']])];
}
//формирование выпадающего списка меню, где $firma - это текущая фирма, ее и надо изменить
$menuItemsFirm=[
['label' => $firma,
'items' => $menuItemsFirmdown,
]
];

echo Nav::widget([
'options' => ['class' => 'navbar-nav navbar-left'],
'items' => $menuItemsFirm,
]);

}
Pjax::end();

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

вот контроллер

class SetcurrfirmaController extends Controller
{

public function actionSetactivefirm($id) {

if(Spr_firms::ChangeCurrFirm($id)) {
return $this->render('setcurrfirma', ['firma' => spr_firms::getFirmname($id)]);
}
throw new NotFoundHttpException(Yii::t('app','The requested page does not exist.') );
}

}

при render он хочет найти setcurrfirma во views. Создал там файл
<?php $request = Yii::$app->request;
$id = $request->get('firma');
echo $firma; ?>

на самом деле даже если там ничего не писать, все равно ничего не меняется.
Выбирая фирму из выпадающего списка, вижу, что в базе значение меняется, но такое ощущение, что setcurrfirma не рендерится. Причем строка браузера меняется на frontend/web/index.php?r=setcurrfirma%2Fsetactivefirm&id=5
и если строку обновить, то в окне появляется та самая фирма, т.е. код
<?php $request = Yii::$app->request;
$id = $request->get('firma');
echo $firma; ?>
работает. Что я не понимаю?
Вообще в идеале ссылка в браузере вообще не должна меняться при смене фирмы.

Добавлено через 11 минут
кстати нашел что url опционально, отключил ['enablePushState' => false] в опциях, сейчас url не меняется.
но и label тоже
0
Саня-нн
2 / 2 / 1
Регистрация: 17.12.2017
Сообщений: 39
20.12.2017, 23:08  [ТС] 5
Разобрался, оказывается надо указывать id
$pjax_id = 'pjax-firma';
Pjax::begin(['enablePushState' => false, 'id'=>$pjax_id,]);

причем в setcurrfirma тоже, и тут же перепостроил список.
0
20.12.2017, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.12.2017, 23:08

Меню с выпадающим списком
Есть меню с выпадающим списком.при наведении список смещает изображение под...

Работа с выпадающим списком
Сильно не ругайтесь, вопрос нубский. Но разобраться сама уже не могу. У меня...

Эдит с выпадающим списком
Я хочу сделать https://yadi.sk/i/HLigChyRvNTq2 вот так, те я ввожу в едит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru