【问题标题】:Laravel 5.1 GET url parameter key not correct passing to controllerLaravel 5.1 GET url 参数键不正确传递给控制器
【发布时间】:2016-01-18 08:24:32
【问题描述】:

我在从 URL 获取 GET 参数时遇到问题。

如果我有例如

http://domain.tld/route?page=2

并且比在控制器中我从 GET 中添加数据

dd(Input::all());

Laravel 返回是

array:1 [▼
  "//route?page" => "2"
]

但应该是

array:1 [▼
  "page" => "2"
]

问题存在于 Laravel 5.1 上 5.0 一切正常。

路线代码是

Route::get('/klub', ['as' => 'teamInfo', 'uses' => 'Game\Team\TeamController@index']);

控制器代码是

final public function index(Request $request)
    {
        $userTeam = UserCache::get('team');
        if ($userTeam->id > 0)
            return view('game.team.info')->with(['userTeam' => $userTeam]);
        else {
            //this is executing in my case
            $proposals = Teams::proposals()->paginate(1);
            return view('game.team.empty', ['teamLimits' => conf('team.php'), 'userTeam' => $userTeam, 'proposals' => $proposals]);
        }
    }

var_dump($_SERVER['QUERY_STRING']);
string(13) "//klub?page=2"

var_dump($_SERVER['REQUEST_URI']);
string(12) "/klub?page=2" 

【问题讨论】:

  • 有什么理由不使用 Request 对象? $request->input('page')?
  • @Pitchinnate 它返回的是相同的
  • 那么需要查看更多代码,例如您的路由器和控制器中的功能可能会有所帮助。
  • @Pitchinnate 我从我的路由器和控制器添加直接代码,我想使用分页,并且 ?page 是从分页器生成但不起作用,仍然显示第一页并且 paginator->currentPage() 是返回 1 我认为这是这个获取参数问题

标签: php laravel laravel-5.1 laravel-routing url-parameters


【解决方案1】:

在您使用的任何服务器(NGINX 或 Apache?)中,某些内容已损坏。服务器变量从服务器引擎传递给 PHP,PHP 只能解析它给出的内容。

如果您使用的是 Apache,则您的 .htaccess 中的 URL 可能重写错误,或者 NGINX 可能会错误地转发该值。 QUERY_STRING 应该是 page=2

【讨论】:

  • 对,这就是我添加的“try_files $uri $uri/ /index.php?$query_string;”
【解决方案2】:

@dboskovic 问题出在 nginx 配置上,错误的变量传递给 cgi,我现在修复它,一切正常。

非常感谢您的帮助和

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 2017-09-24
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多