Php 在codeigniter路由文件中动态重新路由
我有以下URL,可以使用: www.example.com/police/alarm/5 然而,在我的数据库中,我有一个带有一些名称值的表,其中一个值是“car” 我想动态路由我的url,如果其中一个名称值是我的url中的第一个段,请忽略它并在没有它的情况下重新路由。(我将根据常量文件中的该值设置一些变量) 到目前为止,我在routes.php文件中的代码是:Php 在codeigniter路由文件中动态重新路由,php,codeigniter,routing,Php,Codeigniter,Routing,我有以下URL,可以使用: www.example.com/police/alarm/5 然而,在我的数据库中,我有一个带有一些名称值的表,其中一个值是“car” 我想动态路由我的url,如果其中一个名称值是我的url中的第一个段,请忽略它并在没有它的情况下重新路由。(我将根据常量文件中的该值设置一些变量) 到目前为止,我在routes.php文件中的代码是: require_once(BASEPATH.'database/DB.php'); $db =& DB(); $query =
require_once(BASEPATH.'database/DB.php');
$db =& DB();
$query = $db->where('org_type', 2)
->get('organization');
$result = $query->result();
foreach( $result as $row )
{
$route[ $row->name.'/:any' ] = '$1';
}
这给了我以下结果(执行var_转储):
当我浏览到包含“car”或“truck”作为url第一部分的url时,如果没有它,它不会重新路由到url
编辑:
$route[ $row->name.'/:any' ]
or
$route[ $row->name.'/(:any)' ]
结果仍然与测试相同,如果您硬编码它们,它是否会像预期的那样工作?是的,当硬编码时,它工作得非常完美。
$route[$row->name.'/:any']='1'
意味着您拥有几乎无限(DB中的行数)的控制器文件,因为第一个参数$1
被CodeIgniter识别为控制器。您应该有类似于controller\u name/$1
的内容。向我们显示您的控制器代码。控制器名称始终是URL的第二部分,我无法将其设置为固定名称,因为我有多个控制器。。我唯一的要求是跳过URL的第一部分(例如“car”),然后只执行控制器名称(这是第二部分)
$route[ $row->name.'/:any' ]
or
$route[ $row->name.'/(:any)' ]