Laravel - 请解释命名控制器路由'使用','作为'

时间:2015-12-06 21:38:45

标签: php laravel laravel-5.1

我确信这很简单,但我不明白。请从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');
});

2 个答案:

答案 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。如果您想通过地址栏访问路线,您需要使用路线完整地址(同时考虑组前缀)。