我确信这很简单,但我不明白。请从documentation:
解释一下命名控制器路由与Closure路由一样,您可以指定名称 控制器路线:
Route::get('foo', ['uses' => 'FooController@method', 'as' => 'name']);
我不清楚“使用”,“作为”和“名称”的用途,以及如何使用它们。
更新
所以我将路由闭包命名为'bar'
,但在尝试在网址中调用NotFoundHttpException
或/bar
时我得到了/qux
Route::get('foo', ['as' => 'bar', function() {
dd('foo');
}]);
Route::get('qux', function() {
action('bar');
});
答案 0 :(得分:3)
uses
指定路由命中时调用的类,以及该类上的哪个方法。因此,对于Laravel 5.1,使用您的示例,默认情况下,该类method()
上的方法app/Http/Controllers/FooController.php
as
表示您为路线命名,以便以后更容易链接到该路线。假设您有10个视图,并且您从所有视图链接到相同的路径。如果您更改链接的格式,则必须单独跟踪每个链接并更改它们。但是如果你给你的路线命名,你就不必改变任何东西,因为它们只是按照那个名字查看路线。
将它放在一起,假设您有一个网上商店,并且您想要一个适合您的客户页面的路线,并且您希望从您的视图链接到它。它可能看起来像这样:
Route::get('customers', [
'uses' => 'ShopController@customers',
'as' => 'customers'
]);
答案 1 :(得分:0)
uses
属性定义路由将调用的控制器和方法,其中第一部分FooController
是控制器的名称,@
之后是FooController
中的方法名称{1}}。该方法及其控制器必须存在。
as
属性指定路由的名称,并允许您通过其名称(例如Redirect::route('routeName');
)方便地调用路由,同样通过URL::route('routeName')
获取路由地址,这在视图中很方便(注意:这是Laravel 4.2语法)
在编辑中,您遇到了一个问题,因为您正在尝试使用路由名称作为路由的地址。地址是路线中的第一个属性,示例中为foo
。如果您想通过地址栏访问路线,您需要使用路线完整地址(同时考虑组前缀)。