【问题标题】:Laravel Controller request array empty for Route with ParametersLaravel 控制器请求数组为空的带有参数的路由
【发布时间】:2020-08-06 14:12:33
【问题描述】:

我想要一个 SEO 友好的 url,为此我创建了一个 jquery 函数,用于访问网页。就像在blade.php中提到的那样。

参数在 url 中成功传递,但我没有在控制器端收到它。并显示为空或 null 。

index.blade.php

var v_href      = "http://mywebsite.com/program/course/"+discipline+"/"+city+"/"+discipline_id+"/"+city_id;
v_href          = v_href.replace('--', '-');
window.location.href = v_href;

路由文件

web.php

Route::get('/program/course/{discipline?}/{city?}/{discipline_id?}/{city_id?}', 'FinderController@index')->name('finder.index');

控制器功能


            $discipline_id  = $request->input('discipline_id');
            $city_id        = $request->input('city_id');

但我的两个变量都为空

【问题讨论】:

  • 给你NULL值的URL到底是什么?
  • 对于所有 url,无法获取任何数据,似乎 $request 为空。

标签: php jquery laravel seo


【解决方案1】:

要检索路由参数,您必须将它们作为参数添加到控制器函数中。因此,在您的情况下,假设该函数被称为 getSource(),您可以这样做:

public function getSource(?string $discipline = null, ?string $city = null, ?int $discipline_id = null, ?int $city_id = null)
{
    dd($discipline, $city, $discipline_id, $city_id);
}

【讨论】:

  • 还有另外一个参数如$request->except('page') 用于分页
  • 不同的是,这是一个查询参数,你应该通过$request变量来获取
  • 它与public function index(Request $request, ?string $discipline = null, ?string $city = null, ?int $discipline_id = null, ?int $city_id = null) { 合作,谢谢:)
猜你喜欢
  • 1970-01-01
  • 2013-07-14
  • 2019-06-27
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
相关资源
最近更新 更多