Laravel在类构造函数中检索参数


Laravel retrieve param in class constructor

这是我的路线:

Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));

我如何在__构造函数中检索$companyId参数,以避免在所有操作中单独检索它?

如果你想在控制器的__construct中获取参数,你可以这样做:

class HomeController extends 'BaseController
{
    public function __construct()
    {
        $this->routeParamters = Route::current()->parameters();
    }
}

它将返回路由参数的键值列表(例如:['companyId' => '1']) @参见'Illuminate'Routing' route

您还可以使用getParameter()或parameter()方法获取特定的参数。

注意:我不确定这是不是一个好主意。也许有一个更优雅的方法来解决你的问题。

如果你想让这个过程更简单,路由模型绑定似乎是最简单的方法。你不必在控制器的每个动作中获取正确的Model实例,而是在路由过程中将正确的Model传递给控制器。

但是你必须使用Route::resource。

Route::bind('company', 'Company');
Route::resource('company', 'HomeController');

然后你有一个category的实例传递给你的控制器。例如/company/1:

public function show($company)
{
    // Here you can use, for instance, $company->name
}