【问题标题】:Unable to retrieve correct parameter value from get request in Laravel无法从 Laravel 的 get 请求中检索正确的参数值
【发布时间】:2016-03-05 17:27:39
【问题描述】:

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

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以按如下方式注册路由:

    Route::get('play/game/', [
            'uses' => 'GameController@getGame',
            'as' => 'game'
        ]);
    

    然后当你调用url 时,像这样传递变量:

    play/game/?new=yes

    然后在你的控制器中,你可以检查变量是否被设置:

    if($request->input('new')=='yes'
    

    检查参数是否存在:

    $request->has('new')
    

    【讨论】:

      【解决方案2】:

      试试这个 我认为没有必要放“?”参数中的符号

      Route::get('play/game/{new}', [
              'uses' => 'GameController@getGame',
              'as' => 'game'
          ]);
      

      【讨论】:

      • 实际上,? symbol 代表一个可选参数,所以在没有传入值的情况下,Laravel 不会发疯并抛出错误。你可以在这里阅读:laravel.com/docs/5.1/routing
      • 哦,对不起。即使我不关心这个。
      猜你喜欢
      • 2021-10-06
      • 2019-06-26
      • 2015-11-02
      • 1970-01-01
      • 2020-08-03
      • 2016-12-09
      • 1970-01-01
      • 2015-05-16
      • 1970-01-01
      相关资源
      最近更新 更多