如何将一个额外的参数传递给laravel中的控制器


how can I pass an extra parameter to a controller in laravel

我有这个:

Route::get('/product/{id}', 'PagesController@display');

在我的PagesController中,我有这个:

public function display($id) {
    return View::make("details", ["id" => $id, "premium" => $premium]);
}

如何将变量$premium传递给控制器方法而不将其插入url?简单地说,我不想要这个:www.mysite.com/product/false/125false$premium的值),但想要这个:www.mysite.com/product/125。这就是为什么我在控制器方法中只有$id作为参数,而没有$premium。我想以另一种方式传递变量$premium

我尝试过一些方法,比如:

Route::get('/product/{id}', 'PagesController@display')->where("premium" => "false");

这没用。

您可以使用关闭路线并"手动"调用操作:

Route::get('/product/{id}', function($id){
    return app('PagesController')->callAction('display', [$id, false]);
});

public function display($id, $premium) {
    return View::make("details", ["id" => $id, "premium" => $premium]);
}