基本路由

路由在一侧定义 HTTP 方法和 URI 之间的映射,在另一侧定义动作。路由通常写在 app/Http/routes.php 文件中。

在最简单的形式中,路由是通过在 Route facade 上调用相应的 HTTP 方法定义的,将参数传递给匹配 URI(相对于应用程序根目录)的字符串和回调。

例如:返回视图 home 的站点的根 URI 的路由如下所示:

Route::get('/', function() {
    return view('home');
});

一个 post 请求的路由,简单地回显 post 变量:

Route::post('submit', function() {
   return Input::all();
});

//or

Route::post('submit', function(\Illuminate\Http\Request $request) {
   return $request->all();
});

指向 Controller 方法的路由

路径可以引用[ControllerClassName @ Method]语法中的控制器方法,而不是定义内联回调:

Route::get('login', 'LoginController@index');

多个动词的路线

match 方法可用于匹配给定路由的 HTTP 方法数组:

Route::match(['GET', 'POST'], '/', 'LoginController@index');

你还可以使用 all 匹配给定路由的任何 HTTP 方法:

Route::all('login', 'LoginController@index');

路线组

可以对路由进行分组以避免代码重复。

假设所有前缀为/admin 的 URI 使用一个名为 admin 的特定中间件,它们都存在于 App\Http\Controllers\Admin 名称空间中。

使用路由组表示清除的方法如下:

Route::group([
    'namespace' => 'Admin',
    'middleware' => 'admin',
    'prefix' => 'admin'
    ], function () {
        
        // something.dev/admin
        // 'App\Http\Controllers\Admin\IndexController'
        // Uses admin middleware
        Route::get('/', ['uses' => 'IndexController@index']);    
        
        // something.dev/admin/logs
        // 'App\Http\Controllers\Admin\LogsController'
        // Uses admin middleware
        Route::get('/logs', ['uses' => 'LogsController@index']);    
});