Så har jeg en hjernevrider...
Bruger Codeigniter og er igang med at finde link til mine controllers ved at indtaste det "normale" link. Som er. controller/method/id
Lige ser mine routes sådan her ud:
- Array
- (
- [default_controller] => user/create
- [404_override] =>
- [create/success] => user/create/success
- [create] => user/create
- [administrator] => administrator/dashboard
- [login] => user/login
- [logout] => user/logout
- [administrator/editor] => administrator/editor
- [administrator/clients] => administrator/clients
- [administrator/client/(:num)] => administrator/clients/client/$1
- )
Bruger Smarty til at lave mine views, og da links er dynamiske har jeg brug for en løsning.
I Smarty vil jeg gerne kunne gøre sådan her:
- {'administrator/clients/client/152'|site_url}
Så det funktionen site_url skal kunne er at match på mine routes.
Funktionen skulle gerne returnere "administrator/client/152" når den er lavet.
Min idé er først at matche på alle routes values, og derefter deres keys. (For at være 100% sikker, RegEx kunne jo være noget andet.)
Ved bare ikke hvordan jeg skal gøre det.
For at matche på array keys bruger jeg dette stykke kode:
- foreach ($routes as $route => $controller
- $key = str_replace(array(':any', ':num'), array('[^/]+', '[0-9]+'), $route);
-
- // Does the RegEx match?
- if (preg_match('#^'.$key.'$#', $uri, $match)) {
- return preg_replace('#^'.$key.'$#', $controller, $uri);
- }
- }
Det et udkast af en længere funktion.