这是我的路线:
Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));
如何在__constructor中检索$ companyId参数,以避免在我的所有操作中单独检索它?
答案 0 :(得分:3)
如果你想获得控制器的__construct中的参数,你可以这样做:
class HomeController extends \BaseController
{
public function __construct()
{
$this->routeParamters = Route::current()->parameters();
}
}
它将返回路径参数的键值列表(例如:['companyId' => '1']
)@see \Illuminate\Routing\Route
您还可以使用getParameter()或parameter()方法获取特定参数。
注意:我不确定这是个好主意。可能有一种更优雅的方式来解决或更好地解决您的问题。
答案 1 :(得分:0)
如果您想简化流程,路由模型绑定似乎是最简单的方法。您无需在控制器的每个操作中获取正确的模型实例,而是在路由过程中将正确的模型传递给控制器。
但你必须使用Route :: resource。在routes.php中:
Route::bind('company', 'Company');
Route::resource('company', 'HomeController');
然后您将一个类别实例传递给您的控制器。例如/ company / 1:
public function show($company)
{
// Here you can use, for instance, $company->name
}