codeigniter 2.1.4支持http方法自定义路由?

时间:2014-03-21 06:47:39

标签: php api codeigniter rest codeigniter-2

我知道codeigniter支持自定义路由到另一个类/方法 例如

$route['product/(:any)'] = "catalog/product_lookup";

但它是否支持基于调用url的http请求类型的路由,如laravel?

e.g。像在Laravel中一样使用get方法重新路由

Read PUT /users/X  
Route::post('users/{id}','UsersController@update');

2 个答案:

答案 0 :(得分:3)

官方版,生产版没有。在docs中没有一个单词。但...

此功能在development branch中实施。它是从this pull request合并而来的。这是参考该功能的文档开发版本的一部分:

  

在路线中使用HTTP动词

     

如果您愿意,可以使用HTTP Verb(或方法)来定义路由规则。这在构建RESTful应用程序时特别有用。您可以使用标准HTTP谓词(GET,PUT,POST,DELETE)或自定义HTTP谓词(例如:PURGE)。 HTTP谓词规则不区分大小写。您需要做的就是使用HTTP Verb规则添加数组索引。示例:

    $route['products']['put'] = 'product/insert';
     

在上面的示例中,对URI"产品"的PUT请求会打电话给"产品"控制器类和"插入"方法

    $route['products/(:num)']['DELETE'] = 'product/delete/$1';
     

使用"产品"对URL进行DELETE请求作为第一段,第二段中的数字将重新映射到"产品" class && 34;删除"将匹配作为变量传递给方法的方法。

    $route['products/([a-z]+)/(\d+)']['get'] = 'product/$1/$2';
     

对类似于products / shirts / 123的URI的GET请求会调用"产品"控制器类和"衬衫"以数字作为方法参数的方法。

     

使用HTTP Verb是可选的,因此如果您希望在一个规则中处理任何HTTP谓词您可以只编写没有HTTP Verb的路由规则。例如:

    $route['product'] = 'product';
     

这样,所有传入的请求都使用任何包含单词" product"的HTTP方法。在第一部分将重新映射到"产品"类。

快速解决方案是使用该特定提交的更改来更新system/core/Router.phphttps://github.com/EllisLab/CodeIgniter/commit/af709d6ebe6ca75913d7a9eedb4fdcd76be45c50

此外,拉取请求引用Pigeon library来处理高级路由配置。

答案 1 :(得分:0)

是的,您可以在codeigniter中提供自定义路由,但您必须将此路由放在route.php中 例如,admin是我的文件夹名称,登录是管理员文件夹中的控制器

$route['admin'] = "admin/login";

如果我们输入网址http://sonedomain/CI/project/admin

然后它会直接将我重定向到管理文件夹的登录控制器