2017-08-08 18 views
1

我試圖顯示一個基於url的搜索框,意思是特定的路由,它會顯示搜索框,否則它不會顯示。爲此,我使用Request::path()。但問題在於某些路線不起作用。 假設我有拖路線。如Laravel:如何使用Request :: path()檢查動態url()

Route::get('products','[email protected]'); 
Route::get('product/{name}','[email protected]'); 
現在

,如果我使用

@if(Request::path() == 'products' || Request::path() == 'product/{name}') 
    // something print 
@endif 

products路線我可以看到搜索框但product/{name}我不能..我要如何解決問題?

+0

你檢查'支持::路徑()'價值? –

+0

您可以從[這裏](https://stackoverflow.com/q/26840278/2679536)獲得適當的解決方案! –

回答

1
Route::get('products',['as' => 'product.index', 'uses' => '[email protected]']); 
Route::get('product/{name}',['as' => 'product.name', 'uses' => '[email protected]']); 

使用

@if(Route::is('product.*') 
// something print 
@endif 

希望能幫助你

2

更好的主意是通過將值傳遞給視圖來處理這個通過控制器本身。這將使封裝更好,因爲你的佈局不需要知道任何路線。

如果默認情況下顯示搜索欄,請使用而不是,如果存在值則顯示它。如果僅顯示某些頁面,則只有在實際存在值時才顯示它。

+0

我直接通過'Ruquest :: url()'在視圖中使用它。 – User57

+0

在我看來,URL不應該被用作任何頁面的標識符。嘗試在視圖中使用@isset($ showSearchBox)'來檢查它是否存在,並在任何控制器操作中將'showSearchBox'傳遞給'true'值(或任何其他值),該操作應該用搜索框顯示視圖。或者,就像我之前說過的那樣,如果您通常顯示它,請將它設爲'$ hideSearchBox'。 –