Routes and RegEx - Printable Version +- CodeIgniter Forums (https://forum.codeigniter.com) +-- Forum: Using CodeIgniter (https://forum.codeigniter.com/forumdisplay.php?fid=5) +--- Forum: Model-View-Controller (https://forum.codeigniter.com/forumdisplay.php?fid=10) +--- Thread: Routes and RegEx (/showthread.php?tid=71585) |
Routes and RegEx - Wouter60 - 09-01-2018 I've got a question about routes. My controller has an index function that is used for showing a list of items, and some other functions for creating, editing and deleting items. The url mysite/manage_products triggers the index function. Now, on the list of items, I've got buttons for multiple categories, let's say: All, New and Used Products. In my routes.php I have: PHP Code: $route['manage_products/all'] = 'manage_products/index/all'; How can I shorten this to one route? The url manage_products/create should NOT trigger the index function, so I can't have: PHP Code: $route['manage_products/(:any)'] = 'manage_products/index/$1'; RE: Routes and RegEx - jreklund - 09-01-2018 It won't trigger index(). It will look for a matching function before using that specific route. I got the following, and I can still use folder/create, folder/update etc. PHP Code: $route['folder/(:any)'] = 'folder/index/$1'; RE: Routes and RegEx - Wouter60 - 09-01-2018 Tested it, but it's not working! All URL's that start with manage_products/ are routed to the index function. RE: Routes and RegEx - jreklund - 09-01-2018 You need to show us some more code then. Somewhere you are modifying it so it's not working. 1. Create a new class with only index() and create() function, and echo out different text. 2. Delete everything in your route and place only one route. 3. Profit. If not. Start with a fresh Codeigniter. Because it's going to work. :-) RE: Routes and RegEx - Wouter60 - 09-01-2018 My controller: PHP Code: <?php My routes.php: PHP Code: <?php Results: mysite/products ==> Category: all mysite/products/all ==> Category: all mysite/products/new ==> Category: new mysite/products/create ==> Category: create So all URL's are routed to the index method, dispite the fact that a "create()" function exists. RE: Routes and RegEx - jreklund - 09-01-2018 My bad. I always specified id after my /folder/create/id. You can do the same or define a static page. PHP Code: $route['products/create'] = 'products/create'; // or make your urls like this /products/create/product/ Or use _remap() without anything configured in $route. PHP Code: <?php RE: Routes and RegEx - Wouter60 - 09-01-2018 Thank you! The _remap() function was always a mystery to me. Now it's clear. Thanks. RE: Routes and RegEx - ignitedcms - 09-10-2018 I'm not sure if this is a possibility, so first forgive me if this is a redundant suggestion, but now I save all routes and their remapping in a database, and then I simply loop through them in the route config file. It's so convenient rather than having to worry about regex, it might not be practical for your case though. |