传递可选参数未调用正确的参数

Passing Optional parameters not calling to the correct one

不太了解参数,market 和 sort 是可选的

Route::get('Category/{title}/{market?}/{sort?}', 'HomeController@productList');

但是当我在 URI 中这样做时

url: Category/title/?sort=3

它没有注册为 3 进行排序,而是作为市场参数进入

当然,如果 URI 是 Category/title/Maker/3,它将 return 我想要的

public function productList($title, $market = null, $sort = null)
{
    // Gets the Categories with its Markets
    $categorys= Product::cats();
    $brands = Product::CategoryWithMarket($title, $market)->groupBy('Brand')->get();
    $subCat = Product::where('Category', $title)->groupBy('Market')->orderBy('Market', 'ASC')->get();

    if (!$market) {
        $marketList = Product::where('Category', $title)->orderBy('Brand', 'ASC')->orderBy('Label', 'ASC')->paginate(15);
        $brands     = Product::where('Category', $title)->groupBy('Brand')->orderBy('Brand', 'ASC')->get();
        $mainTitle  = ucfirst($title);
    }

    else {
        // Gets the list of products with the catery and market attributes arranged by the brand of product
        $marketList = Product::CategoryWithMarket($title, $market)->paginate(15);
        $mainTitle =  ucfirst($title) . ' ' . ucfirst($market) ;
    }

    return $sort;

在理论上它应该传回排序参数 3 但它没有 return 任何东西,所以我的问题是我如何排序到 return 它的值 3 而不是 null

路由器仅使用路径来匹配路由,并且仅将路径参数注入控制器。因此,如果您希望 sort 从路由器传递到控制器,您需要将其放在路径中 (/{sort?}) , 不在查询中 (?sort=3).

如果你想在你的控制器中访问查询参数,你可以通过 $request 对象(如果它是你的操作的参数)或 Request门面:

public function someAction() {
  echo Request::query('sort');
}