Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么url参数索引在';命名为';而不是';通过';用cakephp?_Url_Cakephp_Url Routing_Cakephp 2.x - Fatal编程技术网

为什么url参数索引在';命名为';而不是';通过';用cakephp?

为什么url参数索引在';命名为';而不是';通过';用cakephp?,url,cakephp,url-routing,cakephp-2.x,Url,Cakephp,Url Routing,Cakephp 2.x,我的网址是: 我正在打印params对象,如下所示: print_r($this->params); 这将打印以下数组: [params] => Array ( [plugin] => [controller] => customers [action] => search [named] => Array (

我的网址是: 我正在打印params对象,如下所示:

print_r($this->params); 
这将打印以下数组:

[params] => Array
        (
            [plugin] => 
            [controller] => customers
            [action] => search
            [named] => Array
                (
                    [1A] => 79:32:97:F2
                )

            [pass] => Array
                (
                    [0] => 1
                    [1] => 1
                )

        )
但它应该打印:

[params] => Array
        (
            [plugin] => 
            [controller] => customers
            [action] => search
            [named] => Array
                (

                )

            [pass] => Array
                (
                    [0] => 1
                    [1] => 1A:79:32:97:F2
                    [2] => 1
                )
        ) 
但当我更改url时,如:


1A:79:32:97:F2作为url中的参数有什么问题?

您需要禁用命名参数解析的贪婪性,默认情况下,所有看起来像命名参数的参数都会被解析为命名参数(即包含
分隔符的值)

在路由配置中,使用
Router::connectNamed()
的第二个参数传递进一步的选项,类似于此,这将只启用默认的CakePHP分页参数:

Router::connectNamed(
    false, // no custom named parameters
    array(
        'default' => true, // default pagination parameters
        'greedy' => false  // no greediness
    )
);
另见


您可能需要对这些
进行编码:
自CakePHP 2.0(2011年)以来,您不应该使用已删除的命名参数。看见对非字母数字数据使用查询字符串。对于简单的(有序的)字母数字数据,可以使用passed,但要确保这些数据被正确地插入。
Router::connectNamed(
    false, // no custom named parameters
    array(
        'default' => true, // default pagination parameters
        'greedy' => false  // no greediness
    )
);