2017-12-22 23 views
0

Laravel에서 다국어 웹 사이트를 만들고 있습니다. 나는 그렇게 할 URL을 필요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'); 

    }); 

}); 

}); 
}); 

내 미들웨어 "로케일"

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); 

} 

이제 문제는 때 I 로케일을 첫 번째 매개 변수로 추가해야하는 매개 변수가있는 경로를 사용하십시오. 예를 들어 :

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

} 

나는 $ 로케일의 값을 갖게됩니다 다른 매개 변수 또는 $ ID를 사용할 수 있도록하는 방법에 매개 변수로 $ 로케일을 추가해야합니다 : 이 UsersController의 방법이다 이는 사용자 ID 대신 "en", "ar"입니다.

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

답변

0

당신은 다음과 같은 예를 들어 당신의 경로를 구축 할 수 있습니다 :

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

그래서 당신이 로케일 경로 매개 변수를 제거한다 그래서 나는 나의 방법 모양을 피하기 수있는 방법이있다.

+0

예, 가능하지만 사용자가 URL을 변경하여 언어를 변경할 수 없습니다. –

+0

글쎄, 언어를 변경하는 방법, 모든 언어에 대해 루프 루핑을 만들 수있는 방법, 메인 페이지에 대해서만 언어를 변경할 수 있도록하려는 경우 메인 페이지의 랜 거리 변경을 처리하기 위해 추가 경로를 만들 수 있습니다. –