【问题标题】:Undefined variable: errors from empty 3rd uri params (code igniter)未定义的变量:来自空的第三个 uri 参数的错误(代码点火器)
【发布时间】:2011-09-29 08:02:58
【问题描述】:

我有很多具有类似功能的控制器

function search($person) {
    if empty($person) {
            redirect('...');
        }
    else {
        .........
    }
}

我之前没有收到未定义的变量错误,但现在我(如果我转到 .../search/)没有通过 $person。我发现我可以通过 function search($person = null) 解决这个问题,但我想知道是否有“更好”的方法。我也很好奇为什么我之前没有收到错误(在本地主机上)但现在……(在 godaddy 上)。

谢谢!!!

【问题讨论】:

    标签: php codeigniter localhost


    【解决方案1】:

    在这种情况下,我不会为参数提供默认值,function search($person) 是如果 $person 确实是必需参数,则函数应如何声明。您希望发出警告,以便在开发过程中快速查看问题所在。

    在生产中,您只需关闭 error reporting/error display
    http://codeigniter.com/user_guide/general/errors.html

    【讨论】:

    • 好吧,我希望它能够像转到 /search 带您到搜索页面,然后转到 /search/person 带您到那个人的页面一样工作......如果我只是关闭错误可以吗还是“不好”
    • @mazlix 您应该使用路由为这两个操作定义单独的操作。 /search 使用搜索操作显示搜索页面,/search/[user] 使用其他操作显示该用户的页面。如果您想将两者混合到一个方法中,那么有一个空的$person 并不是错误,因此您应该默认将其设置为null。规则是:在开发过程中激活错误报告,修复所有错误。在生产中停用错误报告。
    • 好的,谢谢,我实际上希望/search/[term] 做一个搜索结果页面,但如果它碰巧是一个用户,那么它只会做一个redirect('[user]').. 所以我可以这样做吗if ([term]) {... do search results}else{show search page}?
    • @mazlix 对不起,不太明白你在问什么。我希望/search 显示一个搜索表单,/search/[term] 显示一个结果页面。因此,这些看起来像是两个不同的控制器操作,应该通过路由来分类。
    • 好的,有道理。我想search/[term] 映射到一个单独的控制器,你能解释一下如何在路由中做到这一点。谢谢,抱歉新手问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2018-11-02
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多