【问题标题】:CodeIgniter 4 Routing - $ sign is not accepted in placeholderCodeIgniter 4 路由 - 占位符不接受 $ 符号
【发布时间】:2021-10-28 22:53:48
【问题描述】:

我在 codegniter 4 中有以下路线

$routes->add('/sample/(:any)/(:any)', 'Site/CountryController::addEdit/$1/$2');

http://localhost/sample/1/1 给我 404 错误。但是,如果我按如下方式删除 $ 符号,它可以正常工作

$routes->add('/sample/(:any)/(:any)', 'Site/CountryController::addEdit/1/2');

【问题讨论】:

    标签: php routes codeigniter-4


    【解决方案1】:

    它可以在没有美元符号的情况下工作,因为您实际上总是将整数 12 传递到 Controller 方法中,而不管占位符的正则表达式是什么。

    我认为您的问题是http://localhost/sample/1/1 与路由/sample/(:any)/(:any) 不匹配,它匹配/sample/(:any)(:any) 占位符实际上会显示在任何内容上,甚至是多个片段。

    因此将路由定义为.../(:any)/(:any) 在语义上毫无意义,因为第一个(:any) 将捕获所有内容,而第二个(:any) 占位符完全无用。正如您现在定义的那样,sample/ 之外的整个 URI 正在通过第一个占位符传递到 $1。你永远不会有值来填充$2

    在我看来,您确实希望将此占位符限制为 (:segment),而不是 (:any)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 2018-01-04
      • 2011-06-01
      • 2014-10-14
      相关资源
      最近更新 更多