Дополнительные сегменты URL codeigniter

Я делаю сайт для клиента и решил использовать зажигатель кода.

По сути, на сайте есть два бэкенда: один для дизайнеров и один для отдела продаж. Таким образом, после входа в систему пользователь будет перенаправлен либо на

  • mysite.com/продажи/
  • mysite.com/дизайн/

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

  • mysite.com/продажи/заказы/

Продавцы должны иметь возможность просматривать, редактировать, удалять определенные заказы...

  • mysite.com/sales/orders/vieworder/235433

В основном моя проблема в том, что у меня недостаточно сегментов URL для игры.

Мои мысли о решении моей проблемы

  • удалить классы заказов, контейнеров, продуктов и сделать ВСЕ их методы методами класса продаж, хотя это означало бы большое количество методов и загрузку всех моделей, поэтому это казалось бессмысленным.

  • удаление классов продаж/дизайнеров и контроль того, к чему имеет доступ каждый тип пользователей, на основе типа пользователя, хранящегося в данных сеанса.

  • способ иметь дополнительный сегмент URL?

Я ценю любые советы, я просто не хочу, чтобы через 3 недели в проекте я понял, что начал неправильно с самого начала!


person callum.bennett    schedule 13.07.2011    source источник
comment
Извините, как именно вам не хватает дополнительных сегментов URL? Чего не хватает?   -  person Herr    schedule 13.07.2011
comment
Привет. Вы процитировали меня, говоря, что я пропал без вести, хотя я этого не сделал? Мне просто нужен способ, позволяющий отделу продаж получить доступ к определенным классам и их методам, а также разрешить дизайнерам доступ к некоторым из тех же классов, но не ко всем их методам.   -  person callum.bennett    schedule 13.07.2011
comment
Почему бы не дать пользователям какое-то право доступа через БД и предотвратить выполнение функции, если у пользователя/разработчика отсутствует привилегия?   -  person Herr    schedule 13.07.2011
comment
Это была одна из моих мыслей, хотя я просто не был уверен, что это будет лучший способ сделать это. Тогда это лучший способ?   -  person callum.bennett    schedule 13.07.2011
comment
Конечно, как вы должны делать это по-другому, не прилагая максимальных усилий? :)   -  person Herr    schedule 13.07.2011


Ответы (3)


Используйте папки.

Если вы создадите подпапку в /application/ под названием sales, вы можете поместить туда разные контроллеры:

/application/
    /sales/
      orders.php /* Controller */
    /design/

Затем в orders.php вы поместите свой метод vieworders($id) и так далее, и вы сможете получить к нему доступ с помощью domain.com/sales/orders/vieworders/id.

Вы также можете создать подпапки в /models/ и /views/ для организации файлов.

Теперь контроль доступа — это нечто отдельное, и он больше зависит от используемой вами системы аутентификации.

person ramono    schedule 13.07.2011

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

Это было бы именно так, как я бы это сделал.

person Herr    schedule 13.07.2011

Похоже, вам следует взглянуть на класс маршрутизации. Возможно, это грязное решение, но перенаправление sales/(:any) на что-то вроде sales_$1 будет означать, что вы создадите контроллеры с такими именами, как sales_orders. То же самое для части дизайна.

(К вашему сведению: $routing['sales/(:any)'] = 'sales_$1'; должно помочь; см. application/config/routing.php).

person Community    schedule 13.07.2011