我对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
作为输出
答案 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里面。