我有一个控制器名称'abc'
现在,我在其中定义一个索引函数。
现在,当我转到www.example.com/abc/
或www.example.com/abc/index
时,我可以看到我的页面出现。
现在当我在索引函数中传递参数时,我必须将其称为:
www.example.com/abc/index/argument
那么,我怎样才能将我的论点称为
www.example.com/abc/argument
没有将此“论点”视为公共职能?
答案 0 :(得分:7)
您可以在routes.php
文件中为其添加路由,例如:
$route['abc/(:any)'] = 'abc/index/$1';
这样做会将您的网址www.example.com/abc/argument
发送到www.example.com/abc/index/argument
答案 1 :(得分:4)
您在寻找remapping吗?
public function _remap($method, $params = array())
{
if (method_exists($this, $method))
{
return call_user_func_array(array($this, $method), $params);
}
else
{
return $this->index($method);
}
show_404();
}
答案 2 :(得分:1)
使用它的唯一方法是拥有一个新的控制器。
在您的情况下,名称应为argument
,可以使其按照您的意愿运作。
答案 3 :(得分:1)
除非你想覆盖CI_Exceptions / function show_404,这将提供不稳定的解决方案,你可以尝试在你的类abc中使用另一个函数d:
function d (){
$argument= $this -> uri -> segment(3);
if ($argument) {
//do something
}
}
然后你用它调用它:www.example.com/abc/d/argument
答案 4 :(得分:0)
您可以在控制器类中创建一个init函数,然后通过function_exist()跟随http://php.net/manual/en/function.function-exists.php检查是否有任何名为您的第一个参数的函数,然后通过$ this-> index()调用您的索引函数并通过$ this-> index($ arg1)将参数传递给索引函数。