この状況で私は非常に混乱しています。私はリソース名と2つのルートを持っています。ルートユーザーの役割Laravel 5.4
Route::resource('product', 'Product\AreaManagerProductController');
Route::resource('product', 'Product\SystemAdminProductController');
私はコンテキストバインディングを持っているため、1つにする必要があります。
$this->app->when(AreaManagerProductController::class)
->needs(ProductInterface::class)
->give(AreaManagerProductRepository::class);
$this->app->when(SystemAdminProductController::class)
->needs(ProductInterface::class)
->give(SystemAdminProductRepository::class);
コンテキストバインディングはうまくいきますが、私はこのようなルートを変更する必要があります。
Route::resource('product_area_manager', 'Product\AreaManagerProductController');
Route::resource('product_system_admin', 'Product\SystemAdminProductController');
私はProductController
と奇妙なソリューションのいくつかの種類を作成しました。
public function index(){
//Create a conditional statement base on user
return app('App\Http\Controllers\Product\AreaManagerProductController')->index();
}
これは動作する可能性がありますが、ミドルウェアをトリガーしない...この状況ではどのようなことがベストプラクティスになる可能性がありますか。 TY
あなたのルート 'Route :: resource( 'product'、 'Product \ AreaManagerProductController');と同じ名前を持つべきではありません。あなたは@NikhilRadadiyaが言ったように、すべてのルート –
のために異なったものを使うべきです。同じ名前の2つのルートを宣言することはできません。あなたができることはコントローラをもう一方のものに拡張することです.. 'Route :: resource( 'product'あなたのAreaManagerProductControllerで行うことができます、 'class AreaManagerProductController extends SystemAdminProductController' – Demonyowh
私はそれが2つの同じ名前のルートリソースで動作しないことを知っています...私は' ProductController'を拡張しようとします。私がそれを作ることができるかどうかを見てください。ありがとう。 – Rbex