2017-12-22 14 views
0

私はLaravelで多言語のWebサイトを作成しています。Laravelのコントローラメソッドにパラメータが挿入されないようにする方法

https://website.com/en/admin/user/1 
https://website.com/ar/admin/user/1 

ので、私のルートファイルは以下のようになります。:

Route::group(['prefix' => '{locale}'], function(){ 
Route::middleware("locale")->group(function() { 

Route::group(['prefix' => 'admin', 'as' => "admin.", "namespace" => "Admin"],function(){ 

    Route::get('login', '[email protected]')->name("signin")->middleware("Guest"); 
    Route::post('login', '[email protected]')->name('login')->middleware("Guest"); 

    Route::group(["middleware" => "Admin"], function(){ 

     Route::get('/', ["as" => "dashboard", "uses" =>'[email protected]']); 
     Route::get('logout', '[email protected]')->name('logout'); 
     Route::resource('users', 'UsersController'); 

    }); 

}); 

}); 
}); 

マイミドルウェア「ロケール」:私はURLはそのようにする必要が

public function handle($request, Closure $next) 
{ 

    URL::defaults(['locale' => $request->segment(1)]); 
    if(in_array($request->segment(1), config('app.locales'))) 
    { 
     app()->setLocale($request->segment(1)); 
    } 
    return $next($request); 

} 

今の問題は、そのとき、私です私は最初のパラメータとしてロケールを追加する必要があるパラメータを使用してルートを使用しようとします。たとえば:

public function destroy($locale, $id) 
{ 
    //Any Code 

} 

私は他のパラメータを使用できるようにするメソッドにパラメータとして$ロケールを追加する必要がありますまたは$ idは$ロケールの値を持つことになります: これはUserControllerにある状態方法であり、これはユーザーIDの代わりに "en"、 "ar"です。

public function destroy($id) 
{ 
    //Any Code 
} 

答えて

0

あなたはこのような例のためのあなたのルートを構築することができます:

Route::group(['prefix' => app()->getLocale()], function(){ 

ので、あなたはロケールルートパラメータを取り払うますので、私は私の方法は次のようになりますことを避けることができますどのような方法があります。

+0

はい、できますが、ユーザーはURLを変更して言語を変更できなくなりました。 –

+0

これは、言語の変更を許可する方法、すべての言語でループルーピングを作成する方法、メインページの言語のみを変更できるようにする場合、メインページのランゲージの変更を処理するために追加のルートを作成することができます –

関連する問題