我正在尝试将参数传递给我的函数,例如:
<a href="mydomain.com/admin/controller/functionxyz/parameter"> edit</a>
在我的控制器中
function functionxyz($parameter=null){}
如果我传递没有任何参数的函数,则会导致404错误。 我已经尝试过路由,而uri段却无济于事。
更新: 当我使用get in url时,它像:
<a href="mydomain.com/admin/controller/functionxyz?parameter=abc"> edit</a>
仅当我尝试将函数作为参数传递时,我才会进入404页面。
更新: 所以我的路线是这样的:
$route['cmcp/company/edit'] = 'cmcp/company/edit';
$route['cmcp/company/edit/(:any)'] = 'cmcp/company/edit/$1';
其中cmcp是我的管理控制器,它扩展了名为company的控制器并具有功能编辑功能。
答案 0 :(得分:0)
您需要向路由器添加2个条目。一种不带任何参数,而一种不带参数,如下所示:
$route['admin/controller/functionxyz'] = 'admin/controller/functionxyz';
// for only 1 param
$route['admin/controller/functionxyz/(:any)'] = 'admin/controller/functionxyz/$1';
// for multiple params
$route['admin/controller/functionxyz/(.+)'] = 'admin/controller/functionxyz/$1';
答案 1 :(得分:0)
给出目录 / application / controllers / admin / 中名为Home
的控制器,该控制器的方法为public function xyz($param = null) ...
,最好的方法是使用URI的重新映射。但是我们必须实际上重新映射 URI。考虑到这一点,这些路线应该可行。 (请注意,$route
键和值确实确实有所不同。)
$route['home'] = 'admin/home/xyz';
$route['home/(.+)'] = 'admin/home/xyz/$1';
所以链接就像这样
<a href="example.com/home/parameter"> edit</a>
IMO,以上是完全不必要的并发症。除非您完全是控制狂或有数百个控制器,否则很少有理由中断CI的/class/function/id/
URI模式。将控制器放在子文件夹中的唯一结果是使生活变得更加复杂。
答案 2 :(得分:0)
您是否尝试过启动助手'url'并使用base_url函数?
<a href="<?php echo base_url('controller/functionxyz/').'parameter' ?>"> edit</a>
答案 3 :(得分:0)
替换
<a href="mydomain.com/admin/controller/functionxyz/parameter"> edit</a>
使用
<?php echo anchor('controller/functionxyz/parameter','edit'); ?>
看看会发生什么并给我反馈。 据我说,不需要为此编写路由规则。就像有人说的那样,感觉就像是控制狂。 而是尝试给参数提供一些默认值,并相应地做些事情。
示例:
function functionxyz($parameter="notgiven"){
if ($parameter == "notgiven"){
//do something
}else{
//do what you want with the parameter
}
}