2013-05-04 2 views
0

CI ищет Segment[1] для контроллера (в контроллере) и Segment[2] для метода. Теперь у меня есть specific требование по бизнес-приложению, которое нуждается в том, чтобы я не хотел, чтобы CI выглядел или силой перешел в диспетчер dir для загрузки, но у меня будет что-то вроде этого "domainURL/module_identifier_id/controller/method/".Изменения сердечника CodeIgniter

Здесь каждый запрос будет сопровождаться идентификатором идентификатора модуля, который будет иметь полную конфигурацию модуля и другие данные (controller files, module location where it was uploaded, all menus and their URLs which will have same URL mechanism which we want to design for developers to develop modules and upload), хранящиеся в БД.

Нам нужно получить этот идентификатор и поиграть с ним, чтобы получить релевантные записи и указать CI для загрузки контроллера из того места, где мы хотим его, и, действительно, для методов и т. Д. Каждая вещь должна работать так, как есть.

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

Сообщите мне, если у вас есть какие-либо вопросы для очистки?

+0

Как насчет вместо делать основные изменения просто делает URL переписывания в веб-сервер от '/ //' в '/ /? Модуля = '? –

+0

CI также может выглядеть изначально 'Сегмент [1]' для подпапки контроллера, 'Сегмент [2]' для файла контроллера, 'Сегмент [3]' для метода. – Aurel

ответ

0

Я думаю, что я просто хотел бы использовать маршруты для этого:

$route[(:any)/(:any)/(:any)] = '$2/$3/$1'; 

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

+0

избегая изменений ядра так, как вы определили. Я заработал для своего ПЕРВОГО шага, что каждый запрос должен быть достигнут у моего контроллера. Теперь я буду искать, если у нас есть такой URL-запрос «domain/identifier_id/controller/method /», тогда наш главный контроллер, определенный для (: any), должен позаботиться об этом так: ему нужно посмотреть " identifier_id "в базу данных, получить путь DIR и расширять/загружать« контроллер »и« метод », запрошенный по URL-адресу после« identifier_id », обратите внимание, что я ожидаю, что контроллер модуля будет работать так же, как в обычном режиме. сообщите мне, если у вас есть какие-либо вопросы. – Umer

+0

Я не уверен, что полностью придерживаюсь, но использование MY_Controller с __remap() может решить вашу проблему. Взгляните на http://codebyjeff.com/blog/2012/11/ci-_remap-function-the-friend-you-never-knew-you, чтобы посмотреть, как это работает, если вы его не использовали до – jmadsen