我遇到的问题是,如果我在get请求中传递一个可选参数的值,那么如果没有传递任何值,我会得到相同的结果。
路线:
Route::get('/play/game/{new?}', [
'uses' => 'GameController@getGame',
'as' => 'game'
]);
控制器:
public function getGame($new = null) {
$quotes = Quote::orderBy('created_at', 'dec')->paginate(50);
if(!is_null($new)) {
if ($new == 'yes')
$newgame = true;
} else {
$newgame = false;
}
return view('game', ['quotes' => $quotes, 'newgame' => $newgame]);
}
查看:
@if($newgame ==true)
{{Session::flush()}}
@endif
@if($newgame == false)
<h1>Not a new game</h1>
@endif
视图中的第二个if语句只是一个测试,并且始终执行此语句。 作为参考,我使用的是Laravel 5.2
答案 0 :(得分:1)
您可以按如下方式注册路线:
Route::get('play/game/', [
'uses' => 'GameController@getGame',
'as' => 'game'
]);
然后当你调用url
时,传递这样的变量:
play/game/?new=yes
然后在您的控制器中,您可以检查变量是否已设置:
if($request->input('new')=='yes'
检查参数是否存在:
$request->has('new')
答案 1 :(得分:0)
试试这个 我认为没有必要把'?'参数中的符号
Route::get('play/game/{new}', [
'uses' => 'GameController@getGame',
'as' => 'game'
]);