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

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

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

Всем доброго дня и хорошего настроения. У меня такая задача:
Есть несколько контроллеров и представлений. Для каждого контроллера используется свой шаблон, но главное меню у всех одно. Его я вынес в виджет и вставляю в каждый шаблон. В этом меню я и хочу добавить что-то, чтобы позволило реализовать следующее:
http://www.cyberforum.ru/php-yii/thread1066865.html
Есть доп. поле 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/Yii2):

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

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

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

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

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

4
ytf
198 / 211 / 174
Регистрация: 15.08.2017
Сообщений: 1,164
18.12.2017, 12:27 #2
если у тебя не получается программировать на yii, программируй без yii
0
FloppyDisc
Особый статус
551 / 163 / 134
Регистрация: 18.11.2015
Сообщений: 912
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