【问题标题】:CakePHP named paramaters in FireFox Causing issuesCakePHP 在 FireFox 中的命名参数导致问题
【发布时间】:2012-04-04 15:55:47
【问题描述】:

我们有一个在 2.0 上运行的 cakephp 应用程序,我们似乎在使用 Firefox 时遇到了一些编码问题。

我们访问的 URL 是 /newcms/core/users/index/conditions[User][group_id]:6 以在 out cms 系统中应用过滤器。

除了 FireFox 之外,我们在请求对象上得到以下内容

[params] => Array
        (
            [plugin] => core
            [controller] => users
            [action] => newcms_index
            [named] => Array
                (
                    [conditions] => Array
                        (
                            [User] => Array
                                (
                                    [group_id] => 6
                                )

                        )

                )

            [pass] => Array
                (
                )

            [prefix] => newcms
        )

这是正确的,一切正常,如果我们在 FireFox 中访问相同的 URL,我们会得到

[params] => Array
        (
            [plugin] => core
            [controller] => users
            [action] => newcms_index
            [named] => Array
                (
                    [conditions%5BUser%5D%5Bgroup_id%5D] => 6
                )

            [pass] => Array
                (
                )

            [prefix] => newcms
        )

我已尝试对命名条件值进行 URL 编码,但没有成功。

有什么建议吗?

【问题讨论】:

  • 为什么将方括号作为 url 参数的一部分?当然,它正在获取 URL 编码。为什么不使用命名参数?
  • @Barry,他正在使用命名参数,但他试图让它们嵌套。我不确定这是否可能。
  • @bfavaretto 这不是真的,他直接将它们作为 URL 的一部分传递。不好。
  • @bfavaretto 在 Cake 2 中添加了嵌套命名参数,所以是的,这是可能的。虽然我同意在 url 中传递条件是一个坏主意,但看起来这可能是一个错误。
  • @Barry: bfavaretto 是正确的——他使用的是命名参数——因此是 some:something 在 URL 中。

标签: firefox url cakephp encoding named-parameters


【解决方案1】:

在 URL 中使用方括号和数组结构可能不是一个好主意。

为什么不直接使用这样的东西呢?:

/newcms/core/users/index/user_group:6

然后在控制器中处理数据。

【讨论】:

  • 我们不能真正做到这一点,因为它是用于动态创建过滤器的 cms。在非 Firefox 浏览器中,它在核心中进行所有解析,我们将名称参数作为理想的数组返回。如果在 FF 中没有办法,我们可能只需要使用管道之类的东西来替换方括号,然后在应用程序控制器中对其进行解码......虽然不理想......愚蠢的 FF
【解决方案2】:

在 GitHub 中对最新版本的 cake 进行了一些挖掘和尝试之后,这个 FF 问题已得到解决(https://github.com/cakephp/cakephp/commit/e6905b44c3d4512b6989c59a1489bc983d88bcdc)。

在 URI 中传递方括号并没有错,只是 FF 对它们的编码方式与其他浏览器不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2014-10-16
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多