【问题标题】:Codeigniter Routing Unlimited ParamatersCodeigniter 路由无限参数
【发布时间】:2012-02-26 17:33:17
【问题描述】:

我目前在我的 CodeIgniter 路由文件中有这个。 它将具有 URI api/controller/function 的任何内容映射到 controller/api_function

$route['api/(:any)/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5/$6';
$route['api/(:any)/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4/$5';
$route['api/(:any)/(:any)/(:any)/(:any)'] = '$1/api_$2/$3/$4';
$route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';
$route['api/(:any)/(:any)'] = '$1/api_$2';

如您所见,这不是很有效。根据提供的参数数量,我需要不同的路线。有没有办法自动传递所有参数?所以假设,我正在寻找类似的东西......

$route['api/(:any)/(:any)/unlimited parameters'] = '$1/api_$2/unlimited parameters';

谢谢!

【问题讨论】:

    标签: codeigniter parameters routes uri url-routing


    【解决方案1】:

    试试这个:

    $route['api/([^/]*)/([^/]*)/(.*)'] = '$1/api_$2/$3';
    

    它基本上检查两个段(除斜线之外的任何字符),然后将其后的任何内容作为参数附加到您的控制器函数。

    这与带有 NO 参数的路由不匹配,但如果这是您需要处理的情况,这并不难。

    【讨论】:

    • 我需要一些帮助.. 我的网址需要是这样的:eng/controller/method/many-params,其中eng 是任何语言,所以我设置了这样的路线:$route['en-gb/([^/]*)/([^/]*)/(.*)'] = '$1/$2/$3/eng';,但这似乎对我不起作用,我收到 404 错误。有什么想法我做错了吗?
    【解决方案2】:

    效果很好,

    $route['api/(.*)']='api/$1';
    

    【讨论】:

      【解决方案3】:

      我相信这样就可以了:

      $route['api/(:any)/(:any)'] = '$1/api_$2';
      $route['api/(:any)/(:any)/(:any)'] = '$1/api_$2/$3';
      

      【讨论】:

      • 这不起作用,因为(:any) 是一个贪婪的 reg ex 子句,但它看起来好多了。如果 CI 能为路由做一个 (:segment) 助手就好了。
      猜你喜欢
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多