我知道 codeigniter 支持自定义路由到另一个类/方法
例如
$route['product/(:any)'] = "catalog/product_lookup";
但是,它是否支持基于调用 url 的 http 请求类型的路由(如 laravel 中那样)?
例如像 Laravel 一样使用 get 方法重新路由
Read PUT /users/X
Route::post('users/{id}','UsersController@update');
官方生产版本没有。对此只字未提docs http://ellislab.com/codeigniter/user-guide/general/routing.html. But...
该功能是在开发分支 https://github.com/EllisLab/CodeIgniter/tree/develop。它是合并自这个拉取请求 https://github.com/EllisLab/CodeIgniter/pull/2712。以下是涉及该功能的开发版本文档的一部分:
在路由中使用 HTTP 动词
如果您愿意,可以使用 HTTP 动词(或方法)来定义路由规则。这在构建 RESTful 应用程序时特别有用。您可以使用标准 HTTP 动词(GET、PUT、POST、DELETE)或自定义 HTTP 动词(例如:PURGE)。 HTTP 动词规则不区分大小写。您需要做的就是使用 HTTP Verb 规则添加数组索引。例子:
$route['products']['put'] = 'product/insert';
在上面的示例中,对 URI“products”的 PUT 请求将调用“product”控制器类和“insert”方法。
$route['products/(:num)']['DELETE'] = 'product/delete/$1';
对 URL 的 DELETE 请求(其中第一段为“product”,第二段为数字)将被重新映射到“product”类,并且“delete”方法将匹配项作为变量传递给该方法。
$route['products/([a-z]+)/(\d+)']['get'] = 'product/$1/$2';
对类似于 products/shirts/123 的 URI 的 GET 请求将调用“product”控制器类和“shirt”方法,并以数字作为方法参数。
使用 HTTP 动词是可选的,因此如果您希望在一条规则中处理任何 HTTP 动词,您可以只编写不使用 HTTP 动词的路由规则。例子:
$route['product'] = 'product';
这样,使用第一段中包含单词“product”的任何 HTTP 方法的所有传入请求都将被重新映射到“product”类。
快速解决方案是更新system/core/Router.php
与该特定提交的更改:https://github.com/EllisLab/CodeIgniter/commit/af709d6ebe6ca75913d7a9eedb4fdcd76be45c50 https://github.com/EllisLab/CodeIgniter/commit/af709d6ebe6ca75913d7a9eedb4fdcd76be45c50.
此外,拉取请求参考鸽子库 https://github.com/jamierumbelow/pigeon用于处理高级路由配置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)