【发布时间】:2016-01-27 18:57:54
【问题描述】:
大家好,我正在努力实现一些我希望是可能的,但找不到正确的方法。 我正在使用 codeigniter 2.2.0 我想在codeigniter中使用一个url,比如
domain/username/controller/method/$args
让我解释一下当用户输入类似的网址时
domain/mike/job/editJob/12/urgent/
Here "mike" is someone's user name
"job" will be a controller alias
"editJob" will be a method
"12" and "urgent" will be parameter of editJob method.
editJob method will have three parameters.
I want "mike" as 1st parameter,
then "12" and "urgent" as second and third parameter.
到目前为止,我在路线上做了什么
$route['(:any)/job/(:any)'] = 'job_c/$2/$1';
当我输入网址时
domain/mike/job/editJob/12/urgent
在作业控制器中我得到
"12" as first parameter
"urgent" as second parameter
and "mike" as third parameter
** 有没有办法让“mike”作为第一个参数,然后剩下的就可以了**
编辑: 还有一件事,如果我在方法之后传递三个参数,那么我不是 获取用户名!!
我需要将用户名作为第一个参数,因为任何方法中都可能有多个参数,并且也可能有条件参数。
我还想知道一件事。是否可以使这样的路由与我给定的路由相同,但控制器别名也将是通配符。或者,如果有任何方法可以检查 url 中的段是否是控制器,然后是一个路由,如果不是控制器,那么应该发生其他事情。
我不是一个很好的描述者,但仍然试图保持简单。如果有人知道对我有很大帮助的事情。
谢谢
更新 有什么方法可以将用户名“mike”保留在 routes.php 文件中的会话中,因此我不必将其作为参数传递。
再次更新 我已经以某种方式解决了这个问题。 我正在使用
$route['(:any)/garage/([^/]*)/([^/]*)/(.*)'] = '$2/$3/$1/$4';
这里的车库只是路线的简单标识符。当它作为 url 中的第二个段获得车库时,这条路线将起作用。它会像
域/用户/车库/anyControler/anyMethod/manyParameters
它是完全动态的,只有车库用作标识符。如果你愿意,你可以使用你的控制器名称而不是使用任何标识符。那么您不必为多个控制器多次声明相同的东西,但它会正常工作。它适用于任何控制器和任何方法。此外,它还支持动态数量的参数。 我不知道是否有更好的方法可以做到这一点,但它解决了我的问题。如果有人知道更好,那么请分享。
【问题讨论】:
标签: php codeigniter