我是laravel的新手并且尽力使用RTM,但很难理解一些事情。我认为在路由方面我没有意识到上下文的预期水平。在审核the documentation for routing时,我发现uses
关键字允许一个Attach(ing) A Filter To A Controller Action
,但这意味着什么?我有一个使用uses
关键字的现有网站,但我不知道它实际上在做什么。有人可以解释(一个比laravel文档更彻底的选项卡),并展示一个非常简单的例子,它实际上是做什么的?
答案 0 :(得分:3)
路由的关键字uses
是您定义将使用哪个操作(控制器方法或匿名函数)来处理该特定路由的位置。拿这个控制器方法示例:
Route::get('user', array('uses' => 'UserController@showProfile'));
它表示uses
将调用showProfile
类中的方法UserController
,这将是类:
class UserController extends Controller {
public function showProfile
{
return "Hi! I'm the showProfile method!";
}
}
所以,如果你点击了
http://localhost/user
你应该看到消息
Hi! I'm the showProfile method!
因为您的路线执行了您在uses
。
匿名函数(闭包)示例如下:
Route::get('user', array('uses' => function() {
return "Hi, I'm a closure!";
}));
答案 1 :(得分:3)
安东尼奥的答案非常完美地回答了你的(确切)问题,但我想我会将我的评论添加到问题的更广泛的背景中,因为我觉得你实际上并不想知道uses
是什么,但是通常会被路由工作的方式混淆(你提到uses
是用于过滤器,但它不是,但它的使用是添加过滤器配置的副作用)。所以请允许我解释一下:
路由器方法实际上有点简单,但您只需知道他们期望的语法。有两种主要形式,未配置和配置:
未配置的:
// syntax:
Route::get($route, $action);
// controller method
Route::get('some/route', 'Controller@action');
// closure
Route::get('some/route', function () {
return View::make(/* etc. */);
});
但是只要您需要将配置添加到给定路由(包括过滤器,命名等),您需要使用稍微不同的语法:
// syntax:
Route::get($route, $config); // where $config is an array
// controller method
Route::get('some/route', array(
'as' => 'my.route.name',
'uses' => 'Controller@action',
));
// closure
Route::get('some/route', array(
'before' => 'some.filter',
'uses' => function () {
return View::make(/* etc. */);
}
));
// closure alternative
Route::get('some/route', array(
'before' => 'some.filter',
function () {
return View::make(/* etc. */);
}
));
因此,只要您需要为路线命名(使用as
)或添加过滤器(使用before
和after
),您需要将更简单的语法转换为稍微复杂的数组语法。当你把它变成一个数组时,你仍然需要一种方法告诉Laravel实际使用什么 - 这就是uses
的用途。