laravel route group关闭总是执行

时间:2017-02-06 17:59:45

标签: php laravel

我对Laravel路由组有问题.Laravel始终在Route::group方法中执行闭包。考虑以下两条路线:

这在routes / web.php

中声明
Route::group(['prefix' => 'posts'],function(){
  echo 'posts page';
});


Route::get('home'),function(){
  echo 'home page';
});

当我打开www.example.com/home时,Route::group中的闭包执行。

所以我得到了这个输出:

posts page home page

逻辑上我应该只获得home page作为输出

1 个答案:

答案 0 :(得分:1)

这是预期的行为。

Route::group是一组Route::get/post的帮助/包装。

应该执行每个Route::get/post(不回调,只是初始化)来创建路由列表。

此外,Route::group不支持get / post参数:

// Does not work!
Route::group(['prefix' =>'user/{id}'], function ($id) {
    Route::get('view', function() {});
    Route::post('update', function() {});
});

// Works
Route::group(['prefix' => 'user/{id}'], function () {
    Route::get('view', function($id) {});
    Route::post('update', function($id) {});
});

首先,routes/web.php无法直接解析 请求。它构建所有可用路线的列表。

这意味着应该执行每个 Route::get/post(甚至内部组)并添加规则/变量。

Route::group是一个助手,它只是为内部get / post调用添加了额外的参数。

其次,当路由列表准备就绪时,内核会找到一个正确的回调/闭包并执行它。

在其他(粗略)单词Route::group中,将第一个参数添加到每个Route :: get / post里面。