Конфигурация модуля Codeigniter и ACL - PullRequest
1 голос
/ 10 июня 2011

Я занимаюсь разработкой сайта с использованием codeigniter, разделенного на модули с использованием HMVC.Я хочу, чтобы модули были включены / отключены администратором, и вот как я планирую это сделать.Поскольку у меня нет большого опыта в PHP / Codeigniter, следующий способ может быть очень неправильным, поэтому я ищу предложения / отзывы:

Таблица БД: ID модуля |ИМЯ |STATE

В приведенной выше таблице будет содержаться вся информация о модуле, а в поле состояния будет указано значение «отключено / включено» (0 или 1).

Я собираюсь расширить основной CI_Controller ифункция для проверки состояния модуля:

class MY_Controller extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->Model('Module_model'); //loads the module model
}
function check_module_state($module_name = '')
{
return $this->Module_model->getState($module_name); //the model returns TRUE or FALSE
}

Теперь в конструкторе каждого контроллера я буду расширять класс MY_Controller, вызывать check_module_state и, если он вернет FALSE, перенаправитпользователь на «Раздел отключенной страницы»;

class Module1 extends MY_Controller{
public function __construct()
{
parent::__construct();
if($this->check_module_state('module1') == FALSE)
redirect('module_disabled', 'location');
}
}

Будет ли работать вышеперечисленное, есть ли лучшая и более легкая альтернатива?Спасибо

1 Ответ

2 голосов
/ 10 июня 2011

выглядит нормально.Как вы описываете функциональность звучит хорошо.Однако я бы сказал, что если модуль отключен, нет необходимости говорить людям, что он отключен.

Как я подойду к этой проблеме, показано ниже.

Я бы использовал таблицу модулей для построения элементов навигации.Если модуль включен, разрешите отображение ссылки на этот модуль.Если модуль отключен, ссылка не отображается.Это не означает, что вы можете избавиться от безопасности в своих контроллерах, так как люди все еще могут URL Surf.В случае серфинга по URL к отключенному модулю я бы молча перенаправил на модуль по умолчанию, например, на корень сайта (индекс).

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