2

可能这是一个快速的,但我现在无法理解。

使用未命名的可选参数时出现以下问题。假设我在具有两个固定参数和两个可选参数的控制器中有以下操作:

function action ($param1, $param2, $param3=NULL, $param4=NULL) {
//any code
}

$param3 和 $param4 可以同时存在,不存在或两者之一。如果没有设置所有四个或前三个参数,则一切正常。例如

www.domain.com/controller/action/value1/value2/value3/

问题来了,如果 param3 被遗漏了

www.domain.com/controller/action/value1/value2//value4/

有没有办法告诉 Cake 将 param2 和 param4 之间的 // 处理为未设置的 param3?目前,参数被分配给“错误”的变量。

$param1= value1
$param2= value2
$param3= value4
$param4= NULL

我想要的是以下

$param1= value1
$param2= value2
$param3= NULL
$param4= value4

非常感谢这里的任何帮助。

非常感谢各位。。

最好的,塞巴斯蒂安

4

2 回答 2

3

CakePHP 做不到,PHP 做不到。当您定义参数的顺序时,每个参数都需要有一个值。

我建议您使用命名参数,您将能够拥有:

http://www.example.com/controller/action/param1:value1/param2:value2/param4:value4/

有关详细信息,请参阅命名参数的文档。

编辑:我不确定,但你也应该能够做到这一点:

www.domain.com/controller/action/value1/value2//value4/

但是命名参数的选项肯定更好!

于 2012-11-19T11:35:46.920 回答
0

你可以传递你的第三个和第四个参数,这样一个不为空的参数必须放在第一位,然后是你生成你的网址的第二位。

于 2012-11-19T15:41:03.237 回答