以下是我定义可选变量的方法,并且我将有一个中间件来处理可选变量。我不确定为什么这会导致无法访问测试页面,并且我认为它将被解释为邀请代码。有什么解决方法?
Route::group(['middleware' => ['friend']], function() {
Route::get('/{invite_code?}', 'IndexController@index')->name('home')->middleware('firsttime'); // 首页
Route::get('/testing/{invite_code?}', 'IndexController@testing')->name('testing');
});
答案 0 :(得分:1)
例如,我有这三个路线
Route::get('/{invite_code?}', function () {
dd('i am invite code Route');
})->name('invitecode');
Route::get('/myCustomRoute', function () {
dd( 'i am myCustomRoute');
});
Route::get('/testing/{invite_code?}', function(){
dd( 'i am testing invite code Route');
})->name('invitecodetest');
现在我要在 8000 端口中为我的应用提供服务,因此http://localhost:8000/
是我的应用网址
现在,当我按下myCustomRoute
时,它实际上并没有击中myCustomRoute
,这是因为路由器是myCustomRoute
为invite_code
的东西
点击http://localhost:8000/myCustomRoute
,结果将是我是邀请代码“路线”
解决方法
有两种方法
1条路线的重排路线
Route::get('/myCustomRoute', function () {
dd( 'i am myCustomRoute');
});
Route::get('/testing/{invite_code?}', function(){
dd( 'i am testing invite code Route');
})->name('invitecodetest');
Route::get('/{invite_code?}', function () {
dd('i am invite code Route');
})->name('invitecode');
现在再次尝试在web.php末尾添加{invite_code?}
的路由
点击http://localhost:8000/myCustomRoute
的结果将是我是myCustomRoute
现在可以正常使用了,但是有一个缺点
现在尝试http://localhost:8000/myundefinedroutename
但它会打到{invite_code?}
路线,因此是个错误
方法2尝试为路由添加一些前缀
Route::get('/invidecode/{invite_code?}', function ( $invite_code = null) {
dd( $invite_code, "i am invite code Route");
})->name('invitecode');
Route::get('/myCustomRoute', function () {
dd( 'i am myCustomRoute');
});
Route::get('/testing/{invite_code?}', function(){
dd( 'i am testing invite code Route');
})->name('invitecodetest');
现在尝试http://localhost:8000/invidecode/yourcodegoeshere
,结果将是
“此处输入您的代码”
“我是邀请代码路线”
并点击http://localhost:8000/myCustomRoute
,结果将为“我是我的自定义路线”
并按http://localhost:8000/testing/myinvitecode
,结果将为“ myinvitecode”
“我正在测试邀请代码路线”