Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Codeigniter中重新映射以下划线开头的函数_Php_Codeigniter - Fatal编程技术网

Php 在Codeigniter中重新映射以下划线开头的函数

Php 在Codeigniter中重新映射以下划线开头的函数,php,codeigniter,Php,Codeigniter,Codeigniter要求在控制器中使用\u函数(),这样就没有人可以从url访问它们。现在,我有一个名为Profile的控制器,还有一个\u remap()函数,这样我就可以以http://example.com/profile/asdf。。因此,每当我调用url时,\u remap()函数将asdf作为输入并对其进行处理。 现在,对于一个特殊情况,我必须输入一个以下划线开头的名称。像http://example.com/profile/_asdf,它现在生成了一个404,因为Codeigni

Codeigniter要求在控制器中使用
\u函数()
,这样就没有人可以从url访问它们。现在,我有一个名为
Profile
的控制器,还有一个
\u remap()
函数,这样我就可以以
http://example.com/profile/asdf
。。因此,每当我调用url时,
\u remap()
函数将
asdf
作为输入并对其进行处理。
现在,对于一个特殊情况,我必须输入一个以下划线开头的名称。像
http://example.com/profile/_asdf
,它现在生成了一个404,因为Codeigniter不允许在URL中的方法名称前面出现uu

如何克服这个问题?

解决方案 实际上,Codeigniter有一个url验证函数,当它遇到url前面的下划线时,会生成404。我只是稍微修改了一下这个函数。
在文件
/system/core/Router.php
中,有一个名为
\u set\u request()
的函数。它的第一行是
$segments=$this->\u validate\u请求($segments)

我刚刚修改了$segments变量,用破折号(-)替换了所有下划线。
$segments=$this->\u validate\u请求(str\u replace(“\u”、“-”、$segments))


在我的
\u remap()
函数中,将它们替换回来。这是没有私人功能被调用,我完成了我的工作<代码>:)

真的需要使用下划线吗?CI认为,作为一项私人职能(afaik也是一项惯例),是的,这是必要的。不管怎样,解决了。发布解决方案。:)您可能应该将其添加为答案或关闭问题。