[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Админка модулем YII
lodas
Здравствуйте. Столкнулся с проблемой разделения Фронтэнда И Бэкэнда. Так как у меня все организованно на модулях(catalog, users, ... и т.д.). Решил сделать и админку отдельным модулем, но тут возникают некоторые затруднения:
1) Для входа в админку нужен отдельные пароль?
2) Что вообще должно лежать в модуле админа? Плохо представляется сама структура и пример того что как это должно работать.
3) Ваш подход к темизации админки?
kaww
Если структура модульная, то логично, что каждый модуль должен сам реализовывать административный интерфейс. Если же админку вынести в отдельный модуль, то выходит что при сборке проекта в котором, например, не нужен каталог, придется удалять лишний код в админке(ну или оставить неиспользуемый).
Чтобы интерфейс был выполнен в одном стиле, можно определить базовый модуль, который будет идти в качестве зависимости ко всем остальным. В нем определить стандартный набор хелперов (может в yii другая терминология), используемых для построения интерфейса (stdAdminNavigation, stdGrid, stdForm etc.), описать базовый класс контроллера AdminController, так же определить базовый маршрут (admin/), от которого будут наследовать админки всех модулей (делаю так в zf2, на счет этой возможности в yii - хз)
К вопросу об авторизации: Для контроля доступа использовать стандартный acl.
lodas
kaww, т.е вы считает оптимальным оставить как есть по умолчанию: в каждом модуле свой контроллер?
lodas
Итак gii по умолчанию создает в контроллере действие Admin которое дает мне доступ к админскому функционалу. Как я себе представляю действия для создания админки как модуля:
1) Создать модуль Admin
2) Создать в этом модуле(Admin) контроллер UserAdminController и вырезать из стандартно сгенерированого контроллера gii нужные функции администратирования(actionAdmin, actionUpdate, actionDelite...).
3) Так же поступить с остальными контролерами, вырезать из них админские экшены и создавать их в админском модуле в виде нового контроллера.

Все ли я так понял?
Guest
Вот только разнесение функционала по разным контроллерам фронта (admin действия в контроллере) это идея ещё хуже. Проблема отключения функциональности например того же каталога решается всё тем же путём, удалением всего лишь контроллера в админке отвечающего за каталоги. И всё! Модель общая для админки и для фронта. Разносить код функционала админа по всему проекту это жуть.
AlmazDelDiablo
Мне больше всего нравится, когда приложение делится на две части: frontend и backend. А всё, что они используют вместе, выносится в common. То есть, у вас есть три каталога, frontend, backend и common, а внутри них обычная архитектура файлов Yii.

_____________
Блог | VK | GitHub | Twitch
bestxp
если делается под один проект так сказать, а не для массового штампа, то делай в модуле админ, для разделения тебе поможет rbac ( разделение доступа кому можно и кому нет )

Так же вариант с common frontend и backend тоже хороший, у меня так же, только там лежит пространсто имен, а админка в модуле пока что
lodas
bestxp, да про разделение прав RBAC я понял. Единственное, вот допустим у меня такая ситуация:
1) Есть модули: module Catalog и module Admin.
2) В module Admin посредством gii я создаю контроллер AdminCatalog.php
Внутри будут следующие action: Admin, Update, Delete, View и
Ну и естественно каждому действию будут прописаны правила accessRules для RBAC.
3) Теперь в module Catalog я создаю контроллер CatalogController.php(который отвечает за пользовательскую часть). Мне захотелось в нем использовать экшен View который лежит в modules/admin/AdminCatalog.php. Как мне это сделать?

И правильно ли я здесь делаю последовательность действий по созданию модуля админа?
lodas
AlmazDelDiablo, читал что создать два приложения — одно для админской части, другое для клиентской части
Цитата
системы полностью изолированы друг от друга, из этого следует что без «пляски с бубнами» и дополнительных опций в конфиге не получится использовать модели и библиотеки одного приложения в другом, а отсюда вытекает дублирование кода и все что с ним связано.

Подумал пропляски с бубнами и дублирование кода поэтому решил отказаться от такой идеи rolleyes.gif
bestxp
Цитата
системы полностью изолированы друг от друга, из этого следует что без «пляски с бубнами» и дополнительных опций в конфиге не получится использовать модели и библиотеки одного приложения в другом, а отсюда вытекает дублирование кода и все что с ним связано.


скорее тут не правильная архитектура, и нарушение принципов solid о себе дают знать, при правильном подходе low couple и high cohesion такого не будет
lodas
bestxp, есть сылочка откуда вы правильную реализацию делали?

Цитата
bestxp, да про разделение прав RBAC я понял. Единственное, вот допустим у меня такая ситуация:
1) Есть модули: module Catalog и module Admin.
2) В module Admin посредством gii я создаю контроллер AdminCatalog.php
Внутри будут следующие action: Admin, Update, Delete, View и
Ну и естественно каждому действию будут прописаны правила accessRules для RBAC.
3) Теперь в module Catalog я создаю контроллер CatalogController.php(который отвечает за пользовательскую часть). Мне захотелось в нем использовать экшен View который лежит в modules/admin/AdminCatalog.php. Как мне это сделать?

И правильно ли я здесь делаю последовательность действий по созданию модуля админа?
И как мне здесь поступить не подскажете? rolleyes.gif
bestxp
Цитата (lodas @ 30.08.2013 - 15:40)
bestxp, есть сылочка откуда вы правильную реализацию делали?


имеешь ввиду админки?
Ну скорее послушал что говорили 2GIS на devconf и сделал по своемому.
Вроде не плохо, скоро буду отделять в отдельное приложение админку, на одном проекте личном могу, а вот на другом еще нужно поработать что бы сделать, в итоге будет то что врач прописал xD
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.