【问题标题】:CodeIgniter: Page not found when passing parameters to a controller?CodeIgniter:将参数传递给控制器​​时找不到页面?
【发布时间】:2011-02-14 15:50:24
【问题描述】:

我正在尝试将参数传递给 codeigniter 中的控件,但出现 404 page not found 错误,我不明白,我按照指南所说的做了:http://codeigniter.com/user_guide/general/controllers.html#passinguri

当我删除索引函数中的参数并访问控制器时,一切正常,但我无法将值传递给它...

这是我尝试发送参数的代码:

http://mysite/123

<?php
class Main extends Controller {

    function index($username) {

        echo $username;

    }

}
?>

如何从 codeigniter 获得有关此错误的更多信息?

谢谢。

【问题讨论】:

    标签: php codeigniter http-status-code-404 codeigniter-url


    【解决方案1】:

    使用该 URL,CodeIgniter 无法理解您是想将 123 传递给 index 方法还是请求不带参数的 123 方法。如果需要传递一些参数,则必须显式命名默认方法。

    http://mysite/index/123
    

    【讨论】:

    • 有没有绕过它,让它明白我只是将它发送到索引?谢谢。
    • 如果你在那个控制器中只有index方法,你可以通过codeigniter的路由设置重写;如果您有其他方法,如何判断段是方法名称还是索引参数?
    • 当控制器只有索引功能时,我只传递这样的参数。
    • 顺便说一句,http://mysite/index/123 也不起作用...它需要路径中的控制器名称:http://mysite/main/index/123 为什么???
    【解决方案2】:

    选项 1 - 在控制器中重新调用函数

    如果你的控制器包含一个名为 _remap() 的函数,无论你的 URI 包含什么,它都会被调用。它覆盖了 URI 确定调用哪个函数的正常行为,允许您定义自己的函数路由规则。 http://codeigniter.com/user_guide/general/controllers.html#remapping

    选项 2 - 使用自定义路由。

    http://codeigniter.com/user_guide/general/routing.html

    【讨论】:

    • 好的,但是我该如何处理codeigniter要求我指定控制器名称的事实,就像这样:mysite/main/index/123main被定义为我在目录中的默认控制器,为什么我需要指定它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多