让我们看看两种情况下我们拥有什么:
在CodeIgniter中,路由只是将您的请求指向控制器的特定方法:
$route['blog/joe'] = "blogs/users/34"
当您访问
application.com/blog/joe
时,您将调用控制器
BlogsController
,调用方法
users()
并将34作为第一个参数传递。就像他们所说的,在CI中,路由只是URL字符串和其对应的控制器类/方法之间的一对一关系。
现在,在Laravel中,您有很多选择:
- 您可以直接返回简单的响应
- 您可以返回视图
- 您可以将请求指向特定的控制器和方法
- 您可以在闭包中编写一些逻辑,然后决定您想要做什么
您可以为它们添加一些附加功能,例如附加过滤器、检查参数是否符合正则表达式、给它们单独的名称等,但这是主要功能。
能够做这么多事情的原因是什么呢?它赋予了您使用它们的任何方式的权力。例如:
- 需要渲染静态HTML的小型网站?像这样使用它们:
Route::get('/', function()
{
return View::make('greeting');
});
- 需要使用传统的MVC模式构建更大的应用程序吗?可以像这样使用:
Route::get('user/{id}', 'UserController@showProfile');
需要RESTful方法?没问题。这将为所有CRUD方法生成路由:
Route::resource('photo', 'PhotoController');
Route::post('foo/bar', function()
{
return 'Hello World';
});
TL;DR:对于没有或仅有很少逻辑的非常简单的事情,请使用它们而不是控制器。否则,
始终坚持MVC原则并路由到您的控制器,以便它们是实际工作的人。