从视图获取中的Codeigniter传递参数导致404错误

时间:2019-09-15 07:46:22

标签: php url-rewriting url-routing codeigniter-3

我正在尝试将参数传递给我的函数,例如:

<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的控制器并具有功能编辑功能。

4 个答案:

答案 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
        }
    }