【问题标题】:Pass constant in CakePHP 3 routing在 CakePHP 3 路由中传递常量
【发布时间】:2016-02-08 17:28:23
【问题描述】:

在我的 CakePHP 3 应用程序中,我的路由配置如下

$routes->connect(
        '/search-cars-for-dealers/:id',
        [
            'controller' => 'Cars',
            'action' => 'view',
        ],
        [
            'pass' => ['id', 'searchCarsForDealers']
        ]
    );

如您所见,我正在尝试将两个参数传递给控制器​​操作。第一个是id,它是从原始请求 URL 获得的,第二个是一个常量字符串 - searchCarsForDealers

但是,Cake 没有传递常量字符串。它只传递 id 并为第二个参数传递 NULL。所以我的问题是 - 如何根据路由 URL 传递常量字符串?

【问题讨论】:

    标签: cakephp cakephp-3.0


    【解决方案1】:

    如果你想传递更多的参数,那么你必须在$defaults参数中定义它们,即

    $routes->connect(
        '/search-cars-for-dealers/:id',
        [
            'controller' => 'Cars',
            'action' => 'view',
            'searchCarsForDealers'
        ],
        [
            'pass' => ['id']
        ]
    );
    

    这样searchCarsForDealers 将作为第二个参数传递给view 操作。

    需要注意的是,这会影响反向路由,所以不能像这样使用URL数组

    [
        'controller' => 'Cars',
        'action' => 'view',
        123
    ]
    

    更多,但必须将id 值定义为命名参数,并添加searchCarsForDealers 字符串,如

    [
        'controller' => 'Cars',
        'action' => 'view',
        'id' => 123,
        'searchCarsForDealers'
    ]
    

    另请参阅Cookbook > Routing > Connecting Routes

    【讨论】:

      猜你喜欢
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多