我知道codeigniter支持自定义路由到另一个类/方法 例如
$route['product/(:any)'] = "catalog/product_lookup";
但它是否支持基于调用url的http请求类型的路由,如laravel?
e.g。像在Laravel中一样使用get方法重新路由
Read PUT /users/X
Route::post('users/{id}','UsersController@update');
答案 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.php
:https://github.com/EllisLab/CodeIgniter/commit/af709d6ebe6ca75913d7a9eedb4fdcd76be45c50。
此外,拉取请求引用Pigeon library来处理高级路由配置。
答案 1 :(得分:0)
是的,您可以在codeigniter中提供自定义路由,但您必须将此路由放在route.php中 例如,admin是我的文件夹名称,登录是管理员文件夹中的控制器
$route['admin'] = "admin/login";
如果我们输入网址http://sonedomain/CI/project/admin
然后它会直接将我重定向到管理文件夹的登录控制器