Laravel クラスコンストラクターでパラメータを取得 [重複]
質問
私のルートは次のとおりです。
Route::controller('/app/{companyId}/', 'HomeController', array('before' => 'auth'));
すべてのアクションで個別に取得しないようにするには、__constructor で $companyId 引数を取得するにはどうすればよいですか?
解決
コントローラーの __construct 内のパラメーターを取得したい場合は、次のようにします。
class HomeController extends \BaseController
{
public function __construct()
{
$this->routeParamters = Route::current()->parameters();
}
}
ルートのパラメーターのキー値リストを返します (例: ['companyId' => '1']
) @\Illuminate
outing
oute を参照
を使用して特定のパラメータを取得することもできます。 getパラメータ() または パラメータ() 方法。
注記: これがそれほど素晴らしいアイデアかどうかはわかりません。問題を解決するためのより洗練された方法や、より良いアプローチがあるかもしれません。
他のヒント
プロセスを簡素化したい場合は、ルート モデル バインディングが最も簡単な方法と思われます。コントローラーのすべてのアクションで適切な Model インスタンスをフェッチする代わりに、ルーティング プロセス中に適切な Model をコントローラーに渡します。
ただし、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
}
所属していません StackOverflow