CodeIgniter 控制器方法参数问题

Posted

技术标签:

【中文标题】CodeIgniter 控制器方法参数问题【英文标题】:CodeIgniter Controller Method Parameters Issue 【发布时间】:2013-03-10 12:51:32 【问题描述】:

我使用的是codeigniter 2.1,我定义了一个函数如下。

public function reset($email, $hash) 


根据MVC architectureOOPS的概念,如果我没有通过url中的parameters,函数就无法执行。但是在codeigniter这个函数得到执行,那么我该如何克服呢?请帮助我找到解决方案。

【问题讨论】:

你是怎么调用reset方法的,我的意思是你能提供url吗? CI 控制器函数也是 php 函数,因此它的行为与 php 函数相同。所以函数被称为 php functoin 的默认行为 你应该透露一些你的 URL 并解释它是如何被执行的。 【参考方案1】:

你只需要像这样定义空参数:

public function reset($email = null, $hash = null) 


如果你调用函数

(controller name)/reset/mail@mail.com/dsadasda

$email = mail@mail.com & $hash = dsadasda

如果你发挥作用

(controller name)/reset

$email$hash 将为空。

你也可以像这样声明默认参数。

public function reset($email = mail@mail.com, $hash = dsadasdas) 


希望我是清楚的。

【讨论】:

【参考方案2】:

如果要执行带参数或不带参数的函数 您可以为其设置默认值。

public function reset($email = '', $hash = '') 


这种方式在没有参数的情况下仍然可以执行。 您可以对代码使用条件

public function reset($email = '', $hash = '') 

    if(!empty($email) AND !empty($hash))
        //your code here
    

【讨论】:

以上是关于CodeIgniter 控制器方法参数问题的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 3 URI 参数和 404 页面

Codeigniter 和 PHP - 强制 404?

无法访问codeigniter控制器中的uri段

由于 URL 中的参数编码,Codeigniter 控制器失败

CodeIgniter:将参数从视图传递到控制器?

Codeigniter 中的路由 - 自动