воскресенье, 3 февраля 2013 г.

Способы разделения frontend и backend частей в Yii (админка)

Organize directories for applications with front-end and back-end - статья будет полезна новичкам
Обсуждения этой реализации:
Удобный и логичный front-end and back-end + использование модуля yii-user


Один из плюсов - физическое разделение приложения на уровне каталогов, файлов и настроек.


Частые проблемы:

Вопрос: Настроить urlmanager для административной части, чтобы ссылки выглядели: site/admin/
Ответ: в htaccess сделать: RewriteRule ^admin admin.php

Вопрос: Как авторизоваться.
Ответ: How to create front and admin side login form


Больше мне интересно одно сообщение, привожу его цитату:
Сразу хочу сказать: единственно верного разделения не существует, в разных ситуациях тот или иной способ будет казаться более применимым.

Вкратце опишу все наиболее популярные способы:
  1. Модуль admin. Самый простой, но очень эффективный. Единый конфиг, единая точка входа, никаких проблем с url, юзерами и т.д. Минус один - это лишь модуль приложения, и придётся мириться с тем, что все assets, runtime, css, images и прочее нужно либо делить с "родителем", либо прилагать какие-то усилия, что отделить их от front'а.
  2. Рассмотрю сразу два варианта (Organize directories for applications with front-end and back-end, Organize directories for applications with front-end and back-end using WebApplicationEnd behavior). Считаю оба пограничным вариантом между предыдущим, когда backend всё ещё теснится внутри protected, и следующим. Если честно, не вижу смысла выбирать средний вариант (хотя внимательные читатели могли заметить, что один из них был описан мной, когда я только начинал изучать behavior'ы и прочие интересности), т.к. телодвижений нужно больше, по сравнению с первым, а "недостатки" те же, что и у следующего.
  3. Мой фаворит на данный момент Organize directories for applications with front-end and back-end                Обсуждение: Separation of admin controllers from public controllers  На самом деле я пришёл к этому варианту сам, следуя по цепочке, описанной выше, т.к. хотелось полного разделения backend и frontend. Как можно видеть, backend находится в webroot директории как полностью самостоятельная директория. Однако никто нам не запрещает подключить общий конфиг, модели и т.д. Главный плюс: собственная организация директорий (свои css, images, js, темы). Плюс, который некоторые переводят в минус: можно полностью отделить пользователей backend'а от frontend'а. В первом можно использовать классический UserIdentity, а во втором работать с БД, при этом можно легко сделать так, что процессы логина не будут конфликтовать: зашёл админом в backend =>во frontend я ещё гость, никаких покупок в интернет-магазине от имени администратора  Притянутый за уши минус - нельзя сделать ссылку из backend во frontend. Но лично мне, кроме ссылки на главную страницу, большего никогда не требовалось.
  4. И ещё один способ для особо крупных приложений: The directory structure of the Yii project site Хотя принципиально от предыдущего он ничем не отличается (в плане описанных выше возможных проблем уж точно). И да, можно вынести backend вообще на отдельный сервер.
В заключение несколько ссылок по теме:


Комментариев нет:

Отправить комментарий