0

CI looks for Segment[1] for controller (in controller dir) and Segment[2] for Method. Now, I have specific requirement by business application which needs that I do not want CI to look or by force go to controller dir to load but I will have something like this "domainURL/module_identifier_id/controller/method/".

Here, every request will be coming along with its associated Module's Identifier ID which will have complete module's configuration and other data (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) stored in DB.

We need to get this ID and play with it to fetch relevent records and point CI to load controller from where we want it and indeed rest for methods etc every thing needs to be working as it is.

I hope you understand what we are looking for that we have our own main controller type file where all of the requests will be coming with customizing protocol as described above and developers will be following it by all means, that there must be module identifier first and then controller, method etc...

Let me know if you have any query to be cleared on?

Umer
  • 133
  • 2
  • 11
  • How about instead of doing core changes simply doing a URL rewrite in the web server from `///` to `//?module=`? – Joachim Isaksson May 04 '13 at 14:27
  • CI can also looks natively `Segment[1]` for controller sub-folder, `Segment[2]` for controller file, `Segment[3]` for Method. – Aurel May 04 '13 at 16:47

1 Answers1

0

I think I would just use routes for this:

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

This should just rearrange your segments the way you want, without completely changing the way the native routing system works.

jmadsen
  • 3,635
  • 2
  • 33
  • 49
  • avoiding core changes the way you defined. I got it working for my FIRST step that every request need to be reached at my controller. Now next I am looking for that if we have this kind of URL request "domain/identifier_id/controller/method/", then our main controller defined against (:any) needs to take care it this way: it needs to look the "identifier_id" into database, get DIR path and extends/loads the "controller" & "method" requested in URL after "identifier_id", please note that I am expecting module's controller to be working same like normal mode. let me know if you have any query. – Umer May 09 '13 at 07:28
  • I'm not sure I completely follow, but using a MY_Controller with __remap() might solve your problem. Have a look at http://codebyjeff.com/blog/2012/11/ci-_remap-function-the-friend-you-never-knew-you-had to see how it works, if you haven't used it before – jmadsen May 09 '13 at 08:08