Как Правильно Отделить Админку От Фронтенда?

Помогите пожалуйста!

Создал админку своей будущей CMSки на основе Yii-каркаса. Присутствуют 3 модели (и соотв. таблицы): Menu (менюшка сайта), Post, Lookup (в ней также хранятся категории материалов и их иерархия). Все модели, по-умолчанию хранятся в папке Protected\Models (соотв вьюшки и контроллеры - в своих папках).

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

Как посоветуете сейчас мне поступить? Создать в папке Modules папку Admin и поместить их туда (с вьюхами и контроллерами)?

И еще - насколько я понял то надо будет создать новые контроллеры фронтенда на месте старых (с тем же именем?) но с функционалом который нужен для обычного пользователя? т.е может ссылка во фронтденде на конкретный материал будет post/view?id=5, а если тот же материал для вывода администратору то admin/post/view?id=5 (где admin- имя папки с админкой)?

P/S/ Cразу не пинайте - я только начинаю вьезжать в Yii ))))

Так много вопросов. Я затрудняюсь на них ответить.

Но словосочетания "своя CMS" у меня срабатывает предубеждение, что это будет велосипед. Может вам хватит использования http://yupe.ru/ ?

))))

согласен, велосипед, но это будет "мой велосипед", в результате работы над которым я таки планирую научиться работать правильно с этим замечательным фреймворком. Иначе прийдется кроме того чтоб разбираться с самим Yii влезать в ньюансы построения другого продукта.

Мне же, для начала, достаточно будет знать или верно я рассуждаю в поставленном вопросе. CMS не будет универсальной - она будет заточена под отдельный сайт организации. Просто свои наработки при необходимости, унесу в другой какой-то проект подобного класса.

Про свой велосипед согласен, сам люблю. Но начав работать с Yii писал привычные мне по простому РНР конструкции, делал толстые контроллеры, вручную делал HTML таблички и много подобных плохих вещей. Пока не открыл для себя gii и не разобрался в генерируемых им моделях и CRUD-контроллерах. Так сказать Yii-way. Так что вы правы, сразу переходить на сторонние решения не стоит. Но стоит посмотреть на стандартные генераторы кода.

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

Я например, не выносил админку в урл /admin, вместо этого использовал систему контроля доступа основанную на ролях (RBAC) и если пользователь имел токен "admin" к примеру, то ему отображались ссылки на админку и действия админки. Т.е. сам сайт и его админка обслуживались одними и теми же контроллерами.

RBAC - очень гибкая и мощная штука. Правда на её осознание понадобилось время. Для облегчения понимания и настройки использовал модуль http://www.yiiframework.com/extension/rbam/

Вот пожалуй все, что могу сказать по данной теме.

Советую такой способ, http://www.yiiframework.com/wiki/63/organize-directories-for-applications-with-front-end-and-back-end-using-webapplicationend-behavior

Собственно вот одно из решений http://www.yiiframework.com/wiki/483/yiinitializr-the-library/ (сам буду пробовать с новым проектом). Также есть boilerplate (от clevertech), но лучше initializer так как он поддерживается.

Также есть http://www.phundament.com/

К общему выводу не пришли и используют все кто что удобно. Я пока делю на основе RBAC, но у меня не совсем CMS :) Как для меня то проще всего (по логике ) делить на frontend/backend.

Здравствуйте. Тоже ищу советов, спасибо что делитесь ссылками.

Хотел вот уже использовать YiiBoilerplate в своём первом проекте на Yii.

Но тут увидел про Yiinitializer, упомянутый ineersa.

Я так понимаю в Yiinitializer вся фишка в "Composer"? Не думаю что он мне нужен, я всего-лишь искал как лучше сделать админку на Yii.

В общем, как вы думаете, что легче использовать начинающему?

Буду признателен за ответы.

Composer в YiiInitializer можно и выпилить. По этому поводу - половине он нравится и без него никак, другой половине не нравится (и мне в том числе). Если у вас 2-3 пакета то он особой пользы не принесет, а вот если их сотни то тогда он нужен. У меня лично не срослись отношения, так как после апдейтов приходится очень много править (спасибо но я лучше ручками). Выпилить его не составит труда (оставьте пустым до лучших времен).

Насчет YiiBoilerplate - не советую, так как проект мертв (да и есть свои проблемы).

Берите initializer - он основан какраз на boilerplate, поддерживается и развивается, и в нем исправлено большинство проблем boilerplate. Потратьте 1-2 дня на структуру приложения, выберите что вам именно нужно. Поверьте в будущем это время вернется с лихвой.

ineersa, спасибо за совет!

А я уже чуть было не выбрал YiiBoilerplate.

Буду пробовать.

Подскажите, пожалуйста, как в Yiiniyializr правильно переключать конфиги с dev на prod и обратно (чтобы не руками заменять файлы .../config/env.php)?