传递可选参数而不是调用正确的参数

时间:2015-08-24 11:14:21

标签: php laravel laravel-5 optional-parameters

很少参与,市场和排序是可选的

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

但是当我在URI中执行此操作时

url:Category / title /?sort = 3

它没有注册为3作为排序,但作为市场参数

进入

当然,如果URI是Category / title / Makert / 3,它将返回我想要的内容

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;

在theroy中它应该传回sort参数,该参数为3,但它不会返回任何内容,所以我的问题是我如何得到排序以返回其值3而不是为空

1 个答案:

答案 0 :(得分:2)

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

如果您想在控制器中访问查询参数,可以通过 $ request 对象(如果是您的操作的参数)或请求外观来执行此操作:

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