Use hyphen(-) instead of slash(/) or underscore( _ ) in Routes

你说的曾经没有我的故事 提交于 2019-12-10 15:05:25

问题


I'm Using Codeigniter 3.x , Using routes.php I want to create dynamic routes, for example I have a class name Class1.

I want output url

mysite.com/Class1-Student-Search

But using hyphen(-) is not working

If I put a slash(/), it works,

$route['(:any)/Student-Search']  = "search";

it returns

mysite.com/Class1/Student-Search

and using underscore (_) also work.

$route['(:any)_Student-Search']  = "search";

returns

mysite.com/Class1_Student-Search

But I want to use hyphen(-), if I put it, it will go to 404 error page, I used these four solutions but not work for me.

$route['(:any)-Student-Search']  = "search";
$route['([a-zA-Z]+)-Student-Search']  = "search";
$route['([a-zA-Z-0-9]+)-Student-Search']  = "search";
$route['(.*)-Student-Search']  = "search";

And if i hardcode the value in route

$route['Class1-Student-Search']  = "search";

Then it also working


回答1:


You trying to create a dynamic routes which is not possible in codeigniter if you see the following flow chart of codeigniter you understand what i mean.

also you can see this chart in codeigniter official website

when you try to redirect or call some url it's work like this

Every request first goes to route there for you can't make it dynamic




回答2:


Here is my solution, it is working for me, do like this.

$route['(:any)-Student-Search']  = "search";

then in your link button, hopefully in your view, href the link like this.

href="/<?php echo $row->classname; ?>-Student-Search"

the point is that not only you have to make your routes, also suffix it in your href link also the same way.



来源:https://stackoverflow.com/questions/37385655/use-hyphen-instead-of-slash-or-underscore-in-routes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!