|
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 23
|
|
PHP и MVC - генерация различных меню для авторизованных пользователй и гостей01.11.2016, 06:50. Показов 2514. Ответов 17
Метки нет (Все метки)
в общем начал изучать патерн MVC, все вроде бы хорошо, но не могу понять, где сделать генерацию меню, то есть для зарегистрированых пользователей она одна для не зарегистрированных другая, в главном файле template_view.php не вариант, лишний мусор там на мой взгляд, то там работает. может кто сталкивался с таким и подскажет новичку?) заранее спасибо)))
0
|
|
| 01.11.2016, 06:50 | |
|
Ответы с готовыми решениями:
17
Как скрыть пункты меню от гостей? Доступ только для авторизованных пользователей |
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
||||||
| 01.11.2016, 07:55 | ||||||
|
Hy_ok, У меня генерацией меню занимается Вьюха
Кусок кода из view.php , это конечно не продакшн но это работает, просто , динамично
0
|
||||||
|
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 23
|
|
| 01.11.2016, 08:14 [ТС] | |
|
maruo, я вот тоже посидел подумал) и решил во втюху запилить его) а вывод ты как делаешь?) через foreach?
Добавлено через 5 минут maruo, я вот тоже посидел подумал) и решил во вьюху запилить его) а вывод ты как делаешь?) через foreach? Добавлено через 1 минуту я вот тоже посидел подумал) и решил во вьюху запилить его) а вывод ты как делаешь?) через foreach?
0
|
|
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
|
| 01.11.2016, 08:20 | |
Сообщение было отмечено Hy_ok как решение
Решение
Hy_ok, return $sections; отдается уже сгенерированое меню которое потом можно просто через echo вывести
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 23
|
|
| 01.11.2016, 08:32 [ТС] | |
|
Спасибо))) очень помог))))
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
|
| 01.11.2016, 08:40 | |
|
А я бы так не смешивал. Я бы полностью разделил генерацию и вывод, либо изначально делал бы в шаблоне.
0
|
|
|
0 / 0 / 0
Регистрация: 21.10.2016
Сообщений: 23
|
|
| 01.11.2016, 08:51 [ТС] | |
|
в шаблоне все работает, не красиво всеравно как то когда там есть подобные выводы и проверки, по этому я и спрашивал куда лучше перенести это
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 01.11.2016, 10:51 | |
|
вообще ничего такого плохого нет в том, чтобы добавить в шаблон простую проверку условия. Если не хочется и этого - создаете две разных вьюхи с менюшками - одну для гостей, другую для авторизованных, и подключаете нужную.
А вообще, если верстка одна и та же, то обычно для пунктов меню просто дают возможность указать видимость Только не так, как здесь - в функции жестко все забито, да и еще и html-код внутри, а нормально, с передачей массива параметров/установкой свойств (если это класс-формировщик меню)..
0
|
|
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
|
| 02.11.2016, 00:34 | |
|
KOPOJI, про функцию вы имеете ввиду мою? а что в ней смущает вас?
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 02.11.2016, 01:32 | |
|
Вывод html и жестко зашитый массив внутри. Вроде же я написал про это. Например, такая ситуация - у вас есть верхнее меню и нижнее, с одинаковой версткой, но разными пунктами меню. И некоторые из пунктов видны только админу, например. Используя ваш код, понадобится четыре разные функции с дублированием кода (даже если забыть про прописанные жестко видимости - верстка и алгоритм вывода ведь один и тот же)
1
|
|
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
|
| 02.11.2016, 02:10 | |
|
KOPOJI, почему же 4? 1го или максимум 2
Видимость можно не через массив определять а например передать в функцию параметр "статус авторизации" или "ранк пользователя" и от этого генерировать пункты. А вывод html не понял а как иначе? отдавать данные js а тот будет работать с ними и формировать ? и зачем? если мне нужно что бы меню было сгенерировано до того как подгрузятся картинки и прочее. Честно про вывод html я вас плохо понял, в методе не выводится меню оно лишь формирует его, отдает обычную переменную. Где потом я могу ее в любом месте вызвать через echo $menu; И все же я сказал это не продакшн набросал основы. А дальше можно доработать. Мне такое меню удобнее, под мою задачу . У меня пункты для всех одинаковые . pS: да другой вопрос если придется переделывать... PpS: Да проблема может быть если мне нужно будет 10 разных меню и придется лепить 10 функций для меню. Ну тут я думаю проще будет создать класс отдельный? Ну и да, я только познаю основы ООП и MVC могу нести небольшой бред... Но уверен что не полный
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||||
| 02.11.2016, 10:20 | ||||||
|
maruo, не вывод, накапливание кода HTML в переменную, я не правильно выразился, прошу прощения.
Я не говорю именно про то, что формирование html в функции это плохо (хотя, имхо, лучше это вынести в шаблон). Ну а теперь смотрите. Пускай даже две функции будет. И вот у вас редизайн, и вам надо изменить верстку меню. Из-за дублирования кода вы должны будете по всем функциям пробежаться и заменить эту верстку. Согласитесь, это лишняя трата времени, которую легко можно избежать? А ведь частенько бывает куда больше типов меню. Например: верхнее, нижнее, левое. А к ним еще другие менюшки - меню одного раздела, меню другого (например, меню каталога собирается из разделов товара, при заходе внутрь оно меняется на новое и т.д., в разделе "О компании" еще какие-то подпункты). Это все взято из реальных проектов. Представьте, сколько вам придется запилить этих функций? Ради примера того, как это можно сделать нормально - посмотрите, например, реализацию этого в Yii http://www.yiiframework.com/doc/api/1.1/CMenu. То, что там используется виджет и класс, это не так важно, главное сам способ реализации - передается массив параметров, где все и указывается. Даже если сделать передачу пунктов меню в функцию через параметр, наподобие того, как это сделано по ссылке
1
|
||||||
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
|
| 02.11.2016, 15:31 | |
|
KOPOJI, пример наглядный, Но вот сразу обратил внимания нету мультиязычности, а вот мне она 100% нужна как ни крути(хотя и тут не сложно добавить еще пару элементов в массив.
Погодите так вы имеете в виду о том что у меня в функции хранится сам массив меню? $menu блин только сейчас понял. Дружище я ээто знаю я для примера показал и писал что это только на время не продакшен же)Да потом будет передача массива как параметр в функцию)
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
||||||||
| 02.11.2016, 15:40 | ||||||||
|
Ну да, я именно про это и говорил
![]()
0
|
||||||||
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
||||||
| 02.11.2016, 15:59 | ||||||
|
KOPOJI, насчет язычности плохо понял как у Yii это работает. что я смог придумать это такой громадный метод
И он будет разрастаться в высоту до бесконечности. От этого можно избавиться?)
0
|
||||||
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|||||||||||||||||||||
| 02.11.2016, 16:28 | |||||||||||||||||||||
|
Конечно.
создаете директорию, например, "translates", а в ней соответствующие файлы rus.php, usa.php, esp.php, ger.php и т.п. Внутри каждого из файлов размещаете код вида
А в функции, если по-простому, буквально пара строчек:
а, у вас еще чуть различаются данные (хотя это странно, т.к. все же должно быть одинаково). Тогда можно чуть переделать, таким образом:
1
|
|||||||||||||||||||||
|
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
|
|
| 02.11.2016, 16:42 | |
|
ЧKOPOJI, Черт как же я не додумался файлы переводов в папках хранить)
0
|
|
|
Почетный модератор
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
|
|
| 02.11.2016, 16:46 | |
|
если массив с данными для перевода в планах сильно разрастется, то имеет смысл создавать отдельные директории для каждого языка, и подключать нужный модуль для перевода (например, app.php, product.php и т.д.)
0
|
|
| 02.11.2016, 16:46 | |
|
Помогаю со студенческими работами здесь
18
Как вернуть в меню пропавшую опцию добавления Контроллера и Представлений для MVC проекта?
Catalog.top не выводит товары для НЕ авторизованных пользователей Как сделать доступ к страницам для авторизованных пользователей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
. . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|