无法从Laravel中的get请求中检索正确的参数值

时间:2016-03-05 17:27:39

标签: php laravel

我遇到的问题是,如果我在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

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'
    ]);