【问题标题】:cakePHP: optional URL parameterscakePHP:可选的 URL 参数
【发布时间】:2012-11-19 11:04:27
【问题描述】:

这可能很快,但我现在无法理解。

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

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

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

非常感谢各位..

最好的,塞巴斯蒂安

【问题讨论】:

  • 它应该是“public function action()”——如果你不能保证订单,你为什么要使用这样的传递参数?然后使用命名/查询参数。

标签: cakephp cakephp-2.1 url-parameters


【解决方案1】:

CakePHP 无法做到这一点,PHP 更是如此。当你定义参数的顺序时,每个参数都需要有一个值。

我建议你使用命名参数,你就能拥有:

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

有关更多信息,请参阅named parameters 的文档。

编辑:我不确定,但您应该也可以这样做:

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

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

【讨论】:

  • 这是不可能的:www.domain.com/controller/action/value1/value2//value4/ 因为双 // 不会解析为空参数。这与www.domain.com/controller/action/value1/value2/value4/ 相同
【解决方案2】:

您可以通过这样的方式传递您的第三和第四个参数,即不为空的参数必须首先传递,然后是生成您的网址的第二位。

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2016-10-12
    • 2011-01-09
    • 2013-03-29
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多