CodeIgniter - Организация контроллеров в подпапках - PullRequest
0 голосов
/ 08 ноября 2011

Я создаю сайт, используя CodeIgniter, и до сих пор дела шли отлично.Однако в последнее время один из моих контроллеров увеличился в размерах.Я хотел бы разделить контроллер на отдельные файлы в подпапке.Прямо сейчас у меня есть следующее ....

/ controller / dashboard.php

В этом контроллере у меня есть функция для различных секций.Я проверяю, запускаю проверку, чтобы увидеть, есть ли у группы пользователей разрешения на раздел ... и т. Д.Таким образом, URL-адрес может быть примерно таким ...

/ dashboard / pages / add

Я знаю, что могу настроить подпапку, и мой URL будет выглядеть следующим образом ....

/ панель инструментов / staff / pages / add

Но я бы хотел, если это вообще возможно, опустить 'группу пользователей'.Я хотел бы сделать это следующим образом ...

/ controllers / dashboard / -> Если персонал загружает staff.php, если пользователь загружает user.php ... и т. Д.

Я тоже не могу сделать следующее ....

$ this-> load-> controller ();

Как бы вы предложили мне настроить область панели мониторинга?Каждая группа пользователей имеет разные вещи, к которым они должны получить доступ.Помещение всего в один документ становится слишком длинным, а разделение их означает, что я должен поместить группу пользователей в URL .... yucky.

Можно ли выполнить проверку в rout.php?

if ($this->user_model->is_user()) {
  // load this controller
}

Надеюсь, у вас, ребята, будут некоторые идеи для меня!

Спасибо, Джейкоб

1 Ответ

1 голос
/ 08 ноября 2011

Ну, быстрое и грязное решение может использовать перенаправление в главном контроллере ...

Создать контроллер "приборной панели" внутри контроллера /:

class Dashboard extends CI_Controller {

function index()
{
  //make a check for the user that returns the usergroup:
  $user = $this->user_model->is_user();
  redirect('controller/'.$user.'/'.$user);
}

}

, который в основном всякий раз, когдаАдминистратор переходит к http://www.mysite.com/index.php/dashboard, он просто перенаправляет на соответствующий пользовательский контроллер внутри контроллера папки.Поэтому, если ваш чек вернет «персонал», он будет перенаправлен на controller/staff/staff.php и т. Д.

Насколько я знаю, вы не можете использовать пользовательские выражения, подобные этому, в конфигурации маршрутизатора.

Другим возможным решением является использование крючков .Вы можете использовать ловушку pre_controller

pre_controller Вызывается непосредственно перед вызовом любого из ваших контроллеров.Все базовые классы, маршрутизация и проверки безопасности выполнены.

Что-то вроде

$hook['pre_controller'][] = array(
                                'class'    => 'Select',
                                'function' => 'get_usergroup',
                                'filename' => 'Select.php',
                                'filepath' => 'hooks');

И вы создаете файл класса Select.php в папке application / hooks с помощьюметод get_usergroup (), который извлекает из сеанса или из модели группу пользователей и выполняет необходимое перенаправление.

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