Codeigniter HMVC и CMS - PullRequest
       17

Codeigniter HMVC и CMS

0 голосов
/ 09 февраля 2010

Я использую Codeigniter с модульным расширением HMVC и имею внутреннюю область CMS для управления контентом сайта. Я маршрутизирую базовый URL + «admin» (http://localhost/cms/admin) на методы контроллера с префиксом «admin_».

e.g. function admin_index() {...}

А вот мой маршрут:

$route['admin/([a-zA-Z]+)/(:any)'] = "$1/admin_$2";
$route['^admin/(:any)(/)?'] = "$1/admin_index";
$route['^admin(/)?'] = "dashboard/admin_index";
$route['admin/logout'] = "login/admin_logout";

С HMVC он теперь не правильно маршрутизируется. Вот что происходит:

URL: http://localhost/cms/admin/faqs
Directory: modules/faqs/controllers/faqs - index method
--
here is where it breaks
--
URL: http://localhost/cms/admin/faqs/categories
Directory: modules/faqs/controllers/faqs - categories method (does not exits)
Desired: modules/faqs/controllers/categories - index method

Как я могу использовать HMVC, сохраняя при этом «админ» сайта?

Ответы [ 2 ]

2 голосов
/ 10 февраля 2010

Вы делаете жизнь немного сложнее, помещая функции внешнего интерфейса и внутреннего интерфейса в одни и те же контроллеры. Взгляните на мою статью о , как создать структуру администратора в CodeIgniter .

0 голосов
/ 07 декабря 2012

Я работаю над чем-то похожим и реализовал обмен, как вы (3-й вариант), и он работал нормально.

Я пытался реализовать фронт-контроллер для обработки раздела администратора, запускать модули с помощью модулей HMVC :: run () и буферизовать вывод, как мне хочется, но затем я столкнулся с другой проблемой, вам придется изменить URI схемы от / до _ или что-то еще, поскольку вы не сможете отправить сегменты модуля в качестве параметра на ваш контроллер, потому что CI полагается на "/" для механизма маршрутизации.

Единственный способ - эмулировать раздел администратора, как предложил Фил, но есть еще один вариант - контролировать код, реализованный любым, кто использует вашу CMS.

Вы можете расширить CI_Controller (или MX_Controller, если вы используете HMVC) и добавить Admin_Controller, который будет обрабатывать вашу логику и контролировать, что могут делать модули.

Посмотрите на это Базовые классы CodeIgniter: СУХОЙ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...