Лучший способ реализовать админку в CakePHP
Я пытаюсь перейти от CodeIgniter к CakePHP и не могу понять, как лучше всего реализовать панель администратора. В CI я бы создал два разных приложения: одно для интерфейса и одно для панели администратора.
после Googling вокруг, я нашел три способа реализовать панель администратора в CakePHP:
- маршрутизация-я не хочу использовать это, как я хочу, чтобы контроллеры / модели были отдельными для интерфейса и администратора панель
- плагин
- два отдельных приложения
должен ли я использовать плагин для реализации панели администратора или у меня должны быть отдельные приложения? Какие-то преимущества одного над другим?
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 ()