Организация админки, собираю инфу

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
serzhiio
Сообщения: 60
Зарегистрирован: 2011.01.30, 14:09

Re: Организация админки, собираю инфу

Сообщение serzhiio »

mitaichik писал(а):Как я понял serzhiio имеет в виду создание одного контроллера для всего, а для модулей создавать только action. Про наследование, конечно, слышал. Жалко php не поддерживает множественное наследование...
Нет, я не это имел в виду! Я наоборот против использования единых/универсальных методов, смысл в том чтобы не создавать ничего лишнего без необходимости, ну зачем, допустим, в админке создавать новый контроллер наследуемый от существующего, если в этом контроллере уже всё есть, я хочу чтобы админка сама подцепляля контроллеры которые уже разработаны и всего лишь предоставляла дополнительные инструменты по работе с моделями (редактирование, создание и удаление) и, естественно, имела возможность к расширению какими-то строго специфичными и используемыми только в админке контроллерами и компонентами.

Суть в том, что админка - это всего лишь прослойка, которая позволяет выделить особую зону для администраторов и предоставить нужный только администраторам функционал.

Но для всего выше сказанного надо определить ряд соглашений (кстати как и в yii, которая ставит соглашения выше всего).

Вот какие соглашения я думаю нужны:
1. Бэкэнд/админка - является модулем основного приложения
2. Бэкэнд подключает уже имеющиеся контроллеры, не создавая ничего нового без необходимости
3. Подключаемые контроллеры должны иметь определённый ряд "настроек" (методы, переменные), которые админка использует для внутренних нужд
4. Разработчик при необходимости может разработать, в рамках имеющихся View, особые, используемые только для админки (например _formAdmin.php, viewAdmin.php и т.п.)

Надеюсь моя мысль стала чуть более понятной, признаюсь вышло сумбурно.
P.S.: Соглашения - это всего лишь набросок не судите строго
P.P.S.: Я против избыточного наследования
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Организация админки, собираю инфу

Сообщение Nafania »

На мой взгляд пункт 2 организовать сложновато.
Имхо, на каждое действие должно быть под два контроллера, один сайтовый, а другой админский, дабы не перегружать каждый из них лишним функционалом.
Точно также и организовываются view, но только в том случае, если есть необходимость, ибо view все же более универсальны.
serzhiio
Сообщения: 60
Зарегистрирован: 2011.01.30, 14:09

Re: Организация админки, собираю инфу

Сообщение serzhiio »

Хорошо, насколько лишним будет функционал? Будут просто повторяться экшены, и то если у них разные алгоритмы работы, а если один, то и вовсе всего лишь будет меняться view. Да и экшен можно подключить динамически при необходимости через actions(){},т.е. если нет желания "насиловать" контроллер дублирующими экшенами :)
Nafania
Сообщения: 1227
Зарегистрирован: 2011.01.31, 13:12

Re: Организация админки, собираю инфу

Сообщение Nafania »

Я предполагаю, что с наращиванием функциональности модуля, при подходе в один контроллер в какой-то момент все дело упрется в избыточные конструкции в одном контроллере.
Поэтому, имхо, лучше сразу все разбить, ибо лучше больше да проще.
Но это мое мнение.

В целом саму идею я поддерживаю и чем смогу - помогу.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение slavcodev »

serzhiio писал(а):2. Бэкэнд подключает уже имеющиеся контроллеры, не создавая ничего нового без необходимости
вот тут нет проблем, мы всегда можем через настройки заменить любой контроллер на нужный
serzhiio писал(а):3. Подключаемые контроллеры должны иметь определённый ряд "настроек" (методы, переменные), которые админка использует для внутренних нужд
и тут вообще нет проблем, в модуле есть метод beforeControllerAction, где проверяется интерфейс контроллера.
serzhiio писал(а):4. Разработчик при необходимости может разработать, в рамках имеющихся View, особые, используемые только для админки (например _formAdmin.php, viewAdmin.php и т.п.)
этого я не понял, причем тут представления к админке? админка выполнит действия контроллера, кто там действие покажет уже не важно
Жду Yii 3!
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение slavcodev »

Nafania писал(а):Я предполагаю, что с наращиванием функциональности модуля, при подходе в один контроллер в какой-то момент все дело упрется в избыточные конструкции в одном контроллере.
Поэтому, имхо, лучше сразу все разбить, ибо лучше больше да проще.
ИМХО, контроллеры по большей степени много кода не должны содержать, большая часть должна приходить на модели.
Жду Yii 3!
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Re: Организация админки, собираю инфу

Сообщение mitaichik »

serzhiio, ну так что ты решил? Расскажи как будешь все организовывать, интересно же.
serzhiio
Сообщения: 60
Зарегистрирован: 2011.01.30, 14:09

Re: Организация админки, собираю инфу

Сообщение serzhiio »

Я пока проектирую, окончательного решения нет ещё.
Аватара пользователя
MMM_Corp
Сообщения: 19
Зарегистрирован: 2010.11.20, 03:15
Откуда: Украина, Тернополь
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение MMM_Corp »

а я вот вообше админку делаю в вие десктопного приложения, с прямим подключением к БД, мегашустро работает, (как раз изза тормознутности веба отказался от веб-админки) :D
Мой сайт на Yii: http://redbird.te.ua
Аватара пользователя
BuCeFaL
Сообщения: 447
Зарегистрирован: 2010.03.17, 21:22
Откуда: Kiev
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение BuCeFaL »

MMM_Corp писал(а):а я вот вообше админку делаю в вие десктопного приложения, с прямим подключением к БД, мегашустро работает, (как раз изза тормознутности веба отказался от веб-админки) :D
емм в целях безопасности, очень часто (почти всегда), к серверам MySQL можно подключиться только локально. Запрещают нетфильтром внешнее соединенее к 3306 ну и соотв. привелегии c MySQL. Имея десктопное приложение вы привязаны к нему и нужно переносить его на носителе, чего не нужно делать с веб админкой. Честно говоря, про приложение которое напрямую подключается к удаленной базе слышат страшно и надеюсь(хотя это , конечно, не мое дело) оно шифрует данные, такие как логин - пароль к СУБД, перед отправкой. А MySQL разрешает аутентификацию только с определенного диапазона/списка адресов.
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Re: Организация админки, собираю инфу

Сообщение mitaichik »

а я вот вообше админку делаю в вие десктопного приложения, с прямим подключением к БД, мегашустро работает, (как раз изза тормознутности веба отказался от веб-админки)
Я тоже когда-то думал десктоп делать в виде AIR приложения (на Flex'e), но отказался от этой мысли из-за отсутсвия нормального html редактора. А загружать TinyMCE в компонент браузера, имхо, извращение.
в целях безопасности, очень часто (почти всегда), к серверам MySQL можно подключиться только локально.
Можно организовать SSH тунель для MySQL'a, тогда, по сути, безопасно.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение slavcodev »

MMM_Corp писал(а):а я вот вообше админку делаю в вие десктопного приложения, с прямим подключением к БД, мегашустро работает, (как раз изза тормознутности веба отказался от веб-админки) :D
мда, я то считал наоборот что веб-приложения идут на смену десктопам )
Жду Yii 3!
Аватара пользователя
yuran80
Сообщения: 114
Зарегистрирован: 2010.03.21, 10:39
Откуда: Украина, Луцк
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение yuran80 »

Присоединяюсь к теме! Как правильно по соглашениям Yii и MVC организовать админку?
Десктопное приложение - это на любителя, а клиенту нужна нормальная админка - сейчас почти в каждом проекте приходиться почти с нуля писать админ часть. Как это дело упростить? Дайте лишь идею - реализуем...
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Re: Организация админки, собираю инфу

Сообщение mitaichik »

mc-bear писал(а):
MMM_Corp писал(а):а я вот вообше админку делаю в вие десктопного приложения, с прямим подключением к БД, мегашустро работает, (как раз изза тормознутности веба отказался от веб-админки) :D
мда, я то считал наоборот что веб-приложения идут на смену десктопам )
Я тоже так считаю, и мне кажется что в ближайшем будущем это реализуется. Но при этом ИМХО десктоп писать удобней (взять тот же Delphi - кидай компоненты на форму да мышкой соединяй), трафик меньше, работать шустрее будет, ресурсы сервера не жрет ) Но тенденция однозначно идет к Вебу. Или как минимум к десктопу типа air приложений.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Организация админки, собираю инфу

Сообщение slavcodev »

mitaichik писал(а):Но при этом ИМХО десктоп писать удобней (взять тот же Delphi - кидай компоненты на форму да мышкой соединяй), трафик меньше, работать шустрее будет, ресурсы сервера не жрет ) Но тенденция однозначно идет к Вебу. Или как минимум к десктопу типа air приложений.
Чем же удобнее? чтоб сто-то поменять нужно залезть в делфи снова?
Трафик? Ты серьезно? много экономится? )
Ресурсы не жрет? так пиши на javascript, тоже не будет жрать ресурсов сервера.
Тенденция однозначно к вебу, учитывая что html5 уже делает шаги к работе с файлами, бд, кешем и друге прелести, браузеры все быстрее работают с javascript.
Мне удобнее открыть браузер и в нем длеать все что мне нужно, не хочется следить за обновлениями программы, пусть мне загрузится самая последняя версия в браузере.
Жду Yii 3!
Аватара пользователя
mitaichik
Сообщения: 512
Зарегистрирован: 2010.09.24, 21:18
Откуда: Россия, Санкт-Петербург

Re: Организация админки, собираю инфу

Сообщение mitaichik »

Меня сейчас больше всего волнует как организовать меню сайта.

Ясно, что "физически" это тупо многоуровневый массив. Но: По сути, оно должно редактироваться независимо от модулей. Так, например, главное меню (верхний уровень) - может содержать ссылки как на статичные страницы, так и на каталог, и на новости. Следующий уровень, скорее всего, уже должен зависить от конкретного модуля (например у пункта новости подпункты "новости компании", "новости экономики" и пр.) И как быть при построении такого массива, да еще чтоб и пользователям было удобно его редактировать?
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Re: Организация админки, собираю инфу

Сообщение creocoder »

За пару лет разработки на Yii были перепробовано много вариантов бэкенда. Модулем, отдельным приложением, а также идея с универсальным crud контроллером, который мог перенастраиваться под конкретную сущность. Все это утопия :) ИМХО разделение приложения на фронтенд и бэкенд безбожно устарело. В Yii есть отличная система управления ролями. Намного удобнее переводить фронтальную часть в административный режим. Собственно такой подход Yii всегда и предлагал из коробки. Я тоже долго сопротивлялся... а зря ;)
Аватара пользователя
Darth_Ixis
Сообщения: 105
Зарегистрирован: 2010.08.23, 10:03
Откуда: KZ, Almaty

Re: Организация админки, собираю инфу

Сообщение Darth_Ixis »

creocoder писал(а):Намного удобнее переводить фронтальную часть в административный режим. Собственно такой подход Yii всегда и предлагал из коробки. Я тоже долго сопротивлялся... а зря ;)
Пример можно?
Аватара пользователя
creocoder
Сообщения: 138
Зарегистрирован: 2010.01.24, 05:29
Откуда: Тамбов

Re: Организация админки, собираю инфу

Сообщение creocoder »

Darth_Ixis
Посмотрите как gii генерирует crud, это будет отличный пример того о чем я говорю. Правильно настроив права можно сделать так, чтобы для определенных пользователей появлялись те или иные элементы управления во фронтальной части.
serzhiio
Сообщения: 60
Зарегистрирован: 2011.01.30, 14:09

Re: Организация админки, собираю инфу

Сообщение serzhiio »

Собственно вот какой есть вопрос у меня к сообществу:
В модуле, в beforeControllerAction, при наличии нужного мне экшена, я отменяю возврат стандартного экшена, путём return false, и до этого пытаюсь запустить кастомный экшн, но столкнулся с проблемой: если пользоваться $controller->run('customAction') приложение виснет и возвращает ошибку о превышения лимита памяти, но если я использую $controller->runAction(new CustomAction($controller,'CustomAction')) всё на удивление работает.

$controller->runAction() выглядит достаточно некрасиво, хочется пользоваться $controller->run(), так как в actions() контроллера экшен прописан.
Ответить