CodeIgniter 可选参数

Posted

技术标签:

【中文标题】CodeIgniter 可选参数【英文标题】:CodeIgniter optional parameter 【发布时间】:2012-12-20 10:21:26 【问题描述】:

我正在尝试使用 CI 中的路由来创建注册表单

signup 被重新路由到user/signup

但是我的注册函数可以包含一个参数:function signup($type = 1)

如何通过路由选择此选项?我尝试了$route['signup/?(:num)'] = 'user/signup/$1';,但是当转到/signup 时,我得到了404,只有/signup/1/ 有效。

【问题讨论】:

【参考方案1】:

表达这一点的最清晰方式可能是声明两条路线:

$route['signup'] = "user/signup";
$route['signup/(:num)'] = "user/signup/$1";

【讨论】:

效果很好,没想到,我试图弄清楚如何使它成为可选的。谢谢! 编辑似乎不起作用,它似乎没有发送参数 谢谢,我想我更喜欢你的第一个解决方案,更容易阅读/记住。 @Wesley 谢谢!这个小技巧节省了很多时间!【参考方案2】:

对于其他在适当时候阅读此内容的人 - 我相信答案应该是 $route['signup/?(:num)?'],这使得该数字也是可选的。我在其他方面也有类似的问题。

【讨论】:

【参考方案3】:

@Ukuser32 的答案的问题在于它允许像 signup69 这样的 URI 被接受,在这种情况下这可能是无害的,但在一般情况下是不可取的。只需将斜线与捕获的 :num 一起放入

$route['signup(/:num)?'] = "user/signup$1"

请注意,如果您有多个可选段,则需要嵌套它们....

【讨论】:

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

C#中可选参数和具名参数的使用

Dart 知识点:可选参数必需参数

面试突击13:方法优先调用可选参数还是固定参数?

codeigniter 文件上传 - 可选?

是否有必要在将可选参数传递给另一个可选参数之前检查它?

命名参数和可选参数,以及 WCF