Лучший способ реализовать админку в CakePHP

Я пытаюсь перейти от CodeIgniter к CakePHP и не могу понять, как лучше всего реализовать панель администратора. В CI я бы создал два разных приложения: одно для интерфейса и одно для панели администратора.

после Googling вокруг, я нашел три способа реализовать панель администратора в CakePHP:

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

должен ли я использовать плагин для реализации панели администратора или у меня должны быть отдельные приложения? Какие-то преимущества одного над другим?

6 ответов


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

еще одним преимуществом является то, что как передний, так и бэкэнд по-прежнему являются частью одного и того же приложения, поэтому при желании вы can share logic / components, например, вы сможете поместить помощников, которые могут использоваться как для переднего, так и для заднего другое plugin (например, plugins/Shared или plugins/Handytexttools) и использовать их там, где вы хотите

Как правило; поместите компоненты, которые могут быть повторно использованы для других проектов в отдельный плагин, таким образом, вы можете просто добавить эти плагины в другие проекты без проблем. Держите ваши плагины простыми; нет проблем создать плагин, содержащий только один или два помощника или модели и несколько файлов JavaScript. Это облегчит "вишневый выбор" плагинов что вам нужно для проекта. Как только Cake "кэширует" файловые местоположения всех классов в ваших плагинах, накладные расходы отдельных плагинов должны быть минимальными.

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

удачи с вашим проектом и наслаждайтесь CakePHP


Если вы хотите, чтобы ваши контроллеры и модели были отдельными - я бы пошел с отдельным приложением, хотя вы получите кучу дубликатов кода между приложениями (головная боль обслуживания ждет).

мой выбор будет маршрутизация администратора и тема администратора.

включить маршрутизацию администратора в /app/Config / core.в PHP

в AppController beforeFilter():

$this->theme = isset($this->params['admin']) ? "Admin" : "Site";

переместите все представления и ресурсы сайта в /приложений//тематические/сайте/

создайте свои темы администратора в/app/View/Themed / Admin


старый и относится к CakePHP 1.3, но все же это вопрос, который вы должны проверить:панель администрирования CakePHP

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


вы можете использовать admin-routing. Проверьте:

http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing

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

в своем AppController:

public function beforeFilter(){
        $this->set('current_user', $this->Auth->user());
         }  

это делает $current_user доступным в вашем приложении.

затем в ваших view-файлах вы можете проверить:

  <?php if ($current_user['role'] == 'admin'){/*place code for admin users to see here*/} ?>
  <?php if ($current_user){/*place code for logged-in users to see here*/} ?>

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

например, вы реализуете сайт электронной коммерции. У вас есть OrderController как в основном, так и в плагине администратора. Тебе не кажется, что сложно поддерживать логику в двух местах?

Как насчет использования только одного главного контроллера. Это служит двум целям. Один как API контроллер для Ваш админ Арр.

ваша публичная сторона будет в основном общаться через API для получения данных.

Как вы думаете, это хорошая идея?


вы можете использовать представления администратора, такие как admin_index.ctp просто измените это

/ / Configure:: write ('маршрутизация.admin', 'admin');

до

Configure:: write ('маршрутизация.admin', 'admin');

в ядро.php и в контроллере добавьте функцию admin_index ()