FireFox中的CakePHP命名参数导致问题

FireFox中的CakePHP命名参数导致问题,firefox,url,cakephp,encoding,named-parameters,Firefox,Url,Cakephp,Encoding,Named Parameters,我们有一个运行在2.0上的cakephp应用程序,Firefox似乎有一些编码问题 我们访问的URL是/newcms/core/users/index/conditions[User][group_id]:6,用于在cms系统中应用过滤器 在除FireFox之外的所有应用程序中,我们在请求对象上获得以下内容 [params] => Array ( [plugin] => core [controller] => u

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

我们访问的URL是/newcms/core/users/index/conditions[User][group_id]:6,用于在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中使用括号和数组结构可能不是一个好主意

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

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

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

在GitHub中挖掘和使用最新版本的cake后,很好地解决了这个问题(https://github.com/cakephp/cakephp/commit/e6905b44c3d4512b6989c59a1489bc983d88bcdc)


在URI中传递方括号没有什么不正确的地方,只是FF编码方式与其他浏览器不同的问题。

为什么要将方括号作为url参数的一部分?当然,它正在进行URL编码。为什么不使用命名参数?@Barry,他正在使用命名参数,但他正试图使它们嵌套。我不确定这是否可行。@bfavaretto这不是真的,他是直接将它们作为URL的一部分传递的。错误。@bfavaretto嵌套命名参数已添加到Cake 2中,因此是的,这是可能的。虽然我同意在url中传递条件是一个坏主意,但看起来这可能是一个错误。@Barry:bfavaretto是正确的-他使用了一个命名参数-因此url中出现了something:something。我们不能像动态创建过滤器的cms那样做到这一点。在非firefox浏览器中,它在核心中完成所有解析,我们将名称paramater作为一个数组返回,这非常理想。如果在FF中没有任何方法,我们可能只需要使用管道之类的东西来替换方括号,然后在应用程序控制器中对其进行解码…尽管不理想…愚蠢的FF