Dynamic routing

Hi Yii people !

here is my problem : I would like to setup a webapp that could route a request depending in informations stored in the DB.

Let me explain.

The webapp provides modules dedicated to handle (display, modify,etc…) a specific type of objects which are all stored in a DB table. Depending on the object, a specific module is used, but this should not impact URL (routes). For instance :

assuming that :




Object ID 1 is handle by moduleA

Object ID 2 is handle by moduleB

etc...



URL routes resolution would be :




/Object/read?id=1 must route to moduleA/Object/read with GET parameter id = 1

/Object/read?id=2 must route to moduleB/Object/read with GET parameter id = 2

etc...



Now, do you have an idea how to achieve this ? I guess I’ll have to write my own UrlManager right ?

Thanks for your help.

I’ve tried to play with UrlManager and it works fine (more or less) . After the parseUrl, I just check if the route starts with a specific string (the symbolic Module Id) and if yes, use some GET variables to find out what is the real Module Id, replace it and done.

For instance :

url : index.pgp?r=/VirtualModuleId/site/view&id=12

route = /[color="#FF0000"]VirtualModuleId[/color]/site/view => /[color="#2E8B57"]realModuleId[/color]/site/view

mapping between virtualModuleId and realModuleId is done based on the GET[id] value, by my own UrlManager.

(a problem is that string ‘virtualModuleId’ should not be used to name a controller)

I I use the path format for URL, then it doesn’t work anymore.In this case, the url would look like this :

/VirtualModuleId/site/view/id/12

The main problem is not replacing the ‘VirtualModuleId’ string, but accessing GET variables. After the parseUrl, the _GET array is empty. From what I found, the _GET is populated very late, when the controller is created … and that’s too late to choose a module.

I’ll keep on searching (any help is welcome ;) )

8)