2017-06-18 117 views
1

我在傳遞一個前綴參數來對我的網站的所有路由:Laravel 5.4:如何在第一和默認參數設置爲路線()函數

Route::prefix("{param}")->group(function() { 
    # code... 
}); 

有時候,我需要調用在該route()功能觀點。這個問題是存在的,因爲我需要的$param通過像第一個參數:

資源\意見\ welcome.blade.php

<a href="{{ route('about-us', $param) }}">About Us</a> 

的問題是:我不需要通過$paramroute()功能,因爲它沒有必要。如何避免這一點,做的正好以下:

<a href="{{ route('about-us') }}">About Us</a> 

有沒有一種方法來創建一箇中間件,並設置了「全局」配置route()功能?

回答

1

通過使用@William Correa方法,我創建了一個輔助函數來爲默認的Laravel函數助手route()設置一個前綴參數。

應用程序\助手\的functions.php

function routex($route, $params = []) 
{ 
    if (!is_array($params)) { 
     $params = [$params]; 
    } 

    // Set the first parameter to App::getLocale() 
    array_unshift($params, App::getLocale()); 
    return route($route, $params); 
} 

現在,當我試圖讓一個鏈接到route()的名字,只是用routex('about-us')routex()功能會放一個前綴參數像App::getLocale()或其他任何你想要。

0

在你的控制器,你可以保護你的路線是這樣的:

public function __construct() 
    { 
     $this->middleware('auth'); 
    } 

,比

Route::get('/about', '[email protected]')->name('name'); 

或在您的web.php你可以聲明一組不喜歡這個

前綴
Route::namespace('name')->group(function() { 
    Route::get('/about', '[email protected]')->name('name'); 
}); 
+0

是啊!我知道我可以通過使用中間件來保護我的路線。所以......它不是問題。我需要避免將'{param}'從所有路由傳遞給所有控制器,因爲'{param}'是來自URL的前綴。我只需要在我創建的自定義中間件上使用前綴,而不使用控制器/視圖。 –

+0

比做兩組:1組有前綴和1組沒有前綴 – Eddy05

+0

好吧。但是,如果我不傳遞前綴參數,那麼我的應用程序將如何知道該參數? –

0

是的,像這樣:

Route::get('about-us', '[email protected]')->name('about-us'); 

現在,如果您撥打route('about-us')它會生成網址.../about-us。

+0

當然!但我仍然需要爲所有路由傳遞一個前綴參數'{param}'。然後我需要在我的'route()'函數中使用'$ param'。問題是:如何爲所有視圖的每個被調用的'route()'函數設置'$ param',即使我沒有將它設置爲'Link'? 從所有路由獲取'{param}'並將其傳遞給控制器​​,然後將'$ param'傳遞給視圖並不好。 –

相關問題