шаблон главной страницы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

шаблон главной страницы

Сообщение Саня »

Всех благ Вам, уважаемые форумчане. У меня advanced. Я новичок, пытаюсь поправить общий шаблон для страниц сайта. Для всех страниц и котроллеров сайта, мне необходимо из выпадающего списка выбирать текущую фирму и записывать значение в таблицу users в поле firmaid. Пробовал добавить dropdownList, но ругается на $model. Пробовал упростить задание и просто вывести текстовое поле. В фале frontend\views\layouts\main.php перед футером добавляю следующие строки:
<?php Pjax::begin([
// Pjax options
]);
$form = ActiveForm::begin([
'options' => ['data' => ['pjax' => true]],
]);

// Содержимое ActiveForm
echo $form->field($model, 'firma_id')->textInput(['autofocus' => true])->label(false);
ActiveForm::end();
Pjax::end();?>
Он ругается на отсутствие $model, говорит переменна не определена. Мне нужно что бы для любого контроллера и любой страницы сайта это поле ввода присутствовало. Что мне указать вместо $model ? Кстати, если этот кусок кода вставить в login.php, то он работает, но ругается на firm_id. Согласен, в контроллере site, action login поле firma_id тоже должна быть, а как мне быть если контроллеров много?
Или я что-то не понимаю?
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: шаблон главной страницы

Сообщение Dominus »

Скорее всего последнее, что то не понимаете)
https://github.com/yiisoft/yii2/tree/ma ... s/guide-ru
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

Re: шаблон главной страницы

Сообщение Саня »

Вообщем, перефразирую задачу. Для разных контроллеров я использую разные шаблоны. Для удобства стандартное главное меню yii2 вынес в отдельный виджет и в разных шаблонах его вызываю, т.к. меню одно для всех контроллеров. Теперь мне надо вставить в главное меню выбор текущей фирмы для пользователя который авторизовался. Таблица spr_firms содержит два поля id и namefirm. В таблице users добавил поле defaultfirmaid. Попробовал сделать droupdown меню сформированное динамически из справочника фирм, все замечательно, но как поставить ссылку в пункте меню, на что? Мне то нужно при выборе одного пункта меню просто записать значение в поле defaultfirmaid таблицы users и обновить label меню, где отображается текущая фирма. Почитал решения нашел просто список, но не могу его вставить. Как и любое поле, например $form->field($model, 'firma_id')->textInput(['autofocus' => true]). Контроллеры то разные, да и firma_id должна быть прописана в контроллере, но в каком? у меня их много.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: шаблон главной страницы

Сообщение Nex-Otaku »

Если для конкретного пользователя ссылка всегда одна, то просто выводишь ссылку на конкретное действие контроллера, а уже в действии определяешь, какую фирму отображать. Ну это если я правильно понял, что тебе нужно. Из этих объяснений выше сложно что-то разобрать.
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

Re: шаблон главной страницы

Сообщение Саня »

Nex-Otaku писал(а): 2017.12.17, 12:55 Если для конкретного пользователя ссылка всегда одна, то просто выводишь ссылку на конкретное действие контроллера, а уже в действии определяешь, какую фирму отображать. Ну это если я правильно понял, что тебе нужно. Из этих объяснений выше сложно что-то разобрать.
т.е. если я правильно понял, то надо создать отдельный контроллер, в нем action, к примеру spr_firmController и в нем actionUpdate($id), в которой обновить запись у текущего юзера? но а как быть с обновлением label? мне же не надо всю страницу обновлять и остаться пользователь должен на этой же странице.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: шаблон главной страницы

Сообщение Nex-Otaku »

Зачем вообще что-то куда-то записывать? Без терминов программирования можешь объяснить, что там происходит?

Ну вообще при записи без обновления страницы, просто вызываешь AJAX-запрос, отправляешь данные какие нужно.
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

Re: шаблон главной страницы

Сообщение Саня »

есть таблица содержащая список фирм. У пользователя есть фирма по умолчанию (хранится в поле defaultfirmaid таблицы users). Надо организовать смену этой фирмы по умолчанию. Т.е. чтобы на любой странице сайта он мог бы ее поменять. Вывести в главном меню например, что-то (dropdownlist к примеру), где пользователь может выбрать из списка любую фирму, которая и будет использоваться далее по умолчанию. При этом у пользователя в таблице users фирма по умолчанию должна смениться на ту, которую он выбрал.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: шаблон главной страницы

Сообщение Nex-Otaku »

Пример.

Делаешь одно действие в контроллере - любом, но правильнее будет сделать отдельный.
FirmController::actionSetDefaultFirm($firmId)

Привязываешь в яваскрипте на событие выбора фирмы из списка, AJAX-запрос через jQuery. Яваскрипт выводишь в виджете.

В действии контроллера записываешь полученный ID фирмы.

Всё.
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

Re: шаблон главной страницы

Сообщение Саня »

Nex-Otaku писал(а): 2017.12.17, 21:50 Пример.

Делаешь одно действие в контроллере - любом, но правильнее будет сделать отдельный.
FirmController::actionSetDefaultFirm($firmId)

Привязываешь в яваскрипте на событие выбора фирмы из списка, AJAX-запрос через jQuery. Яваскрипт выводишь в виджете.

В действии контроллера записываешь полученный ID фирмы.

Всё.
а можно подробнее? просто если я в шаблон пытаюсь вставить нечно, типа поле или список, к примеру $form->field($model, 'firma_id'), то yii2 ругается на переменную $model. Он не знает что это почему?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: шаблон главной страницы

Сообщение Nex-Otaku »

Тебе не нужна ни форма, ни "$form->field()".

Просто выведи нормальный выпадающий список отдельным HTML-тегом, либо "вручную" либо через хелпер Yii:
http://www.yiiframework.com/doc-2.0/yii ... t()-detail

Заполняешь этот список данными из БД, указываешь в нём выбранный заранее элемент, всё. Прописываешь атрибут "id" для списка, по этому "id" потом цепляешь яваскрипт обычным jQuery.

Не хочу крайне подробно расписывать, это очень базовый и примитивный уровень, тебе нужно самому такие вещи осваивать.
Саня
Сообщения: 12
Зарегистрирован: 2017.12.16, 19:51

Re: шаблон главной страницы

Сообщение Саня »

спасибо, все получилось с помощью меню и pjax.
Ответить