Как организовать backend?
Как организовать backend?
Здравствуйте. Изучаю Yii неспешно, и вот уж он мне по душе пришелся, что не хочется вникать в вордпресы, битриксы etc. Задумался над реализацией "болванки", что бы сократить время решения типовых задач. До этого приличное время уходило только на пользователей, на зачем писать по 20 раз то, что уже написано до нас? И собственно что я хочу попытаться реализовать:
Все приложение строится на модулях, по необходимости в модулях подмодули. Управление новостями - модуль, управление пользователями - модуль. Таким образом мне кажется будет легче расширять / ужимать функционал. Но вот как быть с админкой? До этого делал её в виде модуля, все контроллеры наследовались от админского (Для RBAC), а для отображения была отдельная тема, больше ничего и не было. Все модели в общей папке.
А сейчас как? Так же модулем? Но как тогда подгружать модели из других модулей?
Надеюсь понятно объяснил, простите за косноязычие если что )
Все приложение строится на модулях, по необходимости в модулях подмодули. Управление новостями - модуль, управление пользователями - модуль. Таким образом мне кажется будет легче расширять / ужимать функционал. Но вот как быть с админкой? До этого делал её в виде модуля, все контроллеры наследовались от админского (Для RBAC), а для отображения была отдельная тема, больше ничего и не было. Все модели в общей папке.
А сейчас как? Так же модулем? Но как тогда подгружать модели из других модулей?
Надеюсь понятно объяснил, простите за косноязычие если что )
Re: Как организовать backend?
Я админку предпочитаю делать отдельным приложением. YiiBoiilerplate (https://github.com/clevertech/YiiBoilerplate) или yiinitializr (http://yiinitializr.2amigos.us/) смотрели?
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Как организовать backend?
Здравствуйте, есть замечательная статья по методам разделения - http://janaka.ru/blog/2013/05/yii-backe ... anization/
Re: Как организовать backend?
Готовые модули не использую, все самописные, и в своей болванке для простеньких сайтов я для себя установил некие соглашения для модулей.
Каждый модуль у меня содержит два базовых контроллера, DefaultController и AdminController.
Так же есть обязательный модуль "admin", в единственном дефолтном контроллере подключаются rbac и добавляются все общие экшены (сортировка, активация/деакативация и т.д.) и от него наследуются все AdminController.
В урлменеджере есть правило которое приводит для всех админских экшенов к адресу ссылки к виду site.ru/admin/(module_name)/(action)
Каждый модуль у меня содержит два базовых контроллера, DefaultController и AdminController.
Так же есть обязательный модуль "admin", в единственном дефолтном контроллере подключаются rbac и добавляются все общие экшены (сортировка, активация/деакативация и т.д.) и от него наследуются все AdminController.
В урлменеджере есть правило которое приводит для всех админских экшенов к адресу ссылки к виду site.ru/admin/(module_name)/(action)
Re: Как организовать backend?
chesar, посмотри в сторону yupe, как там реализована админка. Не знаю имеет ли Zadira отношение к yupe, но описанное им вроде похоже на то как в yupe сделано. Сам я лишь поверхностно смотрел эту сборку, но работая над проектом потихоньку прихожу к тому же, отдельный модуль - "администратор", и в других модулях контролер админа, в общем так же как и Zadira описал. На мой взгляд такой подход удобный при масштабировании, если всё правильно сделать, тогда при добавлении нового модуля он автоматом будет подключаться в фронту и админке.
По крайней мере на мой взгляд, это лучше чем городить огород отдельным приложением, как предложили yiijeka и sluchainiyznak, но это как грится большое и жирное !ИМХО!, у каждого свои взгляды на это, и может их вариант правильней...
По крайней мере на мой взгляд, это лучше чем городить огород отдельным приложением, как предложили yiijeka и sluchainiyznak, но это как грится большое и жирное !ИМХО!, у каждого свои взгляды на это, и может их вариант правильней...
Re: Как организовать backend?
SergV, к yupe отношения не имею, я смотрел на нее, но она слишком тяжела для восприятия с первого раза, на мой взгляд. К своему варианту я пришел сам. В основном постоянно идут простые сайты, чуть сложнее сайта визитки или простеньких магазинов, и такая структура очень подходит им. А вот уже для более серьезных вещей я использую структуру YiiBoiilerplate и Yiinitializr.
В новом проекте (CRM с интеграцией АТС Oktell Call-Center) сейчас как раз применяю Yiinitializr Advanced, так как в проекте и бэкенд для менеджеров, фронт для клиентов отслеживающих ситуацию по своему проекту и API для связи с Oktell.
В новом проекте (CRM с интеграцией АТС Oktell Call-Center) сейчас как раз применяю Yiinitializr Advanced, так как в проекте и бэкенд для менеджеров, фронт для клиентов отслеживающих ситуацию по своему проекту и API для связи с Oktell.
Re: Как организовать backend?
Думаю не самый лучший вариант, т.к. количество моделей увеличивается, соответственно и времени на поддержку. Все-таки хочется попробовать что-то более гибкое.yiijeka писал(а):Я админку предпочитаю делать отдельным приложением. YiiBoiilerplate (https://github.com/clevertech/YiiBoilerplate) или yiinitializr (http://yiinitializr.2amigos.us/) смотрели?
Да читал, все небольшое множество что нагуглилось прочитал, и сейчас даже еще больше каша в голове )sluchainiyznak писал(а):Здравствуйте, есть замечательная статья по методам разделения - http://janaka.ru/blog/2013/05/yii-backe ... anization/
Можно чуть поподробнее? Если есть возможность, был бы рад архиву с проектом (логику экшенов можно вырезать), а то так трудно понять как и куда перенаправляет и где какой код.Zadira писал(а):Каждый модуль у меня содержит два базовых контроллера, DefaultController и AdminController.
Так же есть обязательный модуль "admin", в единственном дефолтном контроллере подключаются rbac и добавляются все общие экшены (сортировка, активация/деакативация и т.д.) и от него наследуются все AdminController.
В урлменеджере есть правило которое приводит для всех админских экшенов к адресу ссылки к виду site.ru/admin/(module_name)/(action)
- sluchainiyznak
- Сообщения: 617
- Зарегистрирован: 2013.05.19, 17:51
- Откуда: ХМАО-Югра, г. Сургут
- Контактная информация:
Re: Как организовать backend?
Код: Выделить всё
Думаю не самый лучший вариант, т.к. количество моделей увеличивается, соответственно и времени на поддержку. Все-таки хочется попробовать что-то более гибкое.
Там модели можно привязать как отдельно к фронт- или бэк-энду, так и общие для всех сделать
Re: Как организовать backend?
Моделей остаётся одинаково. Они все помещаются в папку common....Бред короче.Думаю не самый лучший вариант, т.к. количество моделей увеличивается, соответственно и времени на поддержку. Все-таки хочется попробовать что-то более гибкое.
Хочется попробовать более гибкое, пробуйте... Я уже пробовал
Re: Как организовать backend?
chesar, архив скинуть не могу, и еще дней 8 не смогу, с собой только телефон и iPad.
Каркас приложения очень простой:
- генерируем приложение с помощью консоли "yiic webapp path/to/folder";
- с помощью gii генерируем нужное кол-во болванок модулей, из них один точно должен быть "admin";
- подключаем модули в конфиге;
- в папке модуля "admin" protected/modules/admin/controllers переименовываю DefaultController.php в BackController.php, не забудь в контроллере переименовать класс в "BackController", чтобы получилось
Так же в этом контроллере настраиваем фильтры доступа, я использую RBAC в связке с модулем yii-auth для удобной настройки доступа по ролям, это единственный не самописный модуль;
- в конфиге в секцию "import" добавляем 'application.modules.admin.controllers.BackController';
- в protected/modules/admin/AdminModule.php добавляем
- в папке модулей (пример: protected/modules/(module_name)/controllers), создаем контроллер AdminController.php с содержимым:
- в конфиге делаю настройку компонента "urlManager" примерно так:
- Разбрасываешь экшены по контроллерам, например стандартные "index", "view" в "DefaultController.php", а в "AdminContoller" экшены "admin" (я обычно его переименовываю в "index"), "create", "update" и "delete";
В итоге это стандартное приложение Yii, просто с не большим дополнением.
P.S. Писал по памяти, может быть где то ошибка допущена.
P.P.S. Это просто мучение писать такой пост на iPad
Каркас приложения очень простой:
- генерируем приложение с помощью консоли "yiic webapp path/to/folder";
- с помощью gii генерируем нужное кол-во болванок модулей, из них один точно должен быть "admin";
- подключаем модули в конфиге;
- в папке модуля "admin" protected/modules/admin/controllers переименовываю DefaultController.php в BackController.php, не забудь в контроллере переименовать класс в "BackController", чтобы получилось
Код: Выделить всё
class BackController extends Controller
- в конфиге в секцию "import" добавляем 'application.modules.admin.controllers.BackController';
- в protected/modules/admin/AdminModule.php добавляем
Код: Выделить всё
public $defaultController = 'back';
Код: Выделить всё
class AdminController extends BackController
{
public function actionIndex()
{
$this->render('index');
}
}
Код: Выделить всё
'urlManager' => array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
'login' => 'user/default/login',
'logout' => 'user/default/logout',
'admin' => 'admin/back/index',
'admin/<module:\w+>' => '<module>/admin',
'admin/<module:\w+>/<action:\w+>/<id:\d+>' => '<module>/admin/<action>',
'admin/<module:\w+>/<action:\w+>' => '<module>/admin/<action>',
/**
* остальные правила, если где то, что то нужно переопределить
*/
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),
),
В итоге это стандартное приложение Yii, просто с не большим дополнением.
P.S. Писал по памяти, может быть где то ошибка допущена.
P.P.S. Это просто мучение писать такой пост на iPad
Re: Как организовать backend?
Огромнейшее спасибо! В принципе маленько понял, на днях попробую.Zadira писал(а):P.P.S. Это просто мучение писать такой пост на iPad
Re: Как организовать backend?
Пробовать не надо, 100% работает это решение.В принципе маленько понял, на днях попробую.
Zadira, хдэш ты раньше был дорогой, сток времени потерял изобретая свою админку-велосипед, так как не въехал с налёту как и что работает в yupe, а тут оказывается як два пальца об асфальт. Надо тебе заблогить данный вариант, шоб народ не мучился искать.
Re: Как организовать backend?
SergV, блога не имею, но лучше будет просто на githab'е выложить скелет приложения с описание что и как работает, хотя трудностей не должно возникнуть, если предварительно прочитать прочитать раздел "Основы" и "Управление URL" из полного руководства.
Re: Как организовать backend?
Ну..., если блога нема, то тогда на githab'е тоже можно, главное что бы на виду было.
Что касается прочитать куроводство, то не все нормально читают, да и не все могут понять не с первого, не с 10-го раза что там написано сухим и непонятным языком. Мне лично проще в коде разобраться с подсказкой на том же англицком которого не знаю, чем понять что в русскоязычном куроводстве имеется в виду. То что я сейчас уже знаю за последние три месяца, я изучил по коду и статьям в блогах, но не как не по куроводству, так как там 90% написано слишком сухо, даже обрывки кода не помогают а только больше запутывают, и это при том что это типа для начинающих. Ну да лан, это ужо не по теме...
Что касается прочитать куроводство, то не все нормально читают, да и не все могут понять не с первого, не с 10-го раза что там написано сухим и непонятным языком. Мне лично проще в коде разобраться с подсказкой на том же англицком которого не знаю, чем понять что в русскоязычном куроводстве имеется в виду. То что я сейчас уже знаю за последние три месяца, я изучил по коду и статьям в блогах, но не как не по куроводству, так как там 90% написано слишком сухо, даже обрывки кода не помогают а только больше запутывают, и это при том что это типа для начинающих. Ну да лан, это ужо не по теме...