2014-10-08 132 views
0

我正在組織我的網站的各個部分,這些部分應該在我的導航欄上(第一眼看到相應鏈接上的active類)時可見。目前,我正在檢查導航欄中的每個鏈接,如果當前的URL與鏈接的鏈接相匹配,但它僅在每種情況下適用於1個URL。它應該是這樣的:將變量傳遞給在Laravel控制器中創建的所有視圖

  • article ---------------->article部分
  • article/create ----->article部分
  • article/edit - ------>article
  • forum ------------------->forum
  • forum/post/12345 - >forum

由於我所有的「部分」都使用控制器,我想也許我可以實現一種方式(可能使用構造函數)將變量(section)傳遞給控制器​​返回的所有視圖,以便我的佈局可以訪問它並在適當的鏈接上設置active類。

但我不希望有做return View::make('myView')->with('section', $this->section);每次

任何人知道如何做到這一點?謝謝。

回答

3

您應該使用Request::segment(1)與本節進行比較。

如果您的網址是article/create,並且使用Request::segment(1)就會返回你article,而不是article/create

而事實上,你沒有任何東西傳遞給刀片在這種情況下,因爲它應該是可見的:

@if (Request::segment(1) == 'article') 
    class="active" 
@endif 
+0

哦這是一個好主意。我從來沒有想過直接在視圖中做,但由於我使用路由分組的一切它應該工作正常!感謝提示 – 3rgo 2014-10-08 11:32:44

+0

這比Request :: is('blah *);方法列在其他地方感謝。 – Darius 2017-11-05 07:31:39

1

您也可以在所有視圖之間共享它,這樣一來,如果更改會更容易,以後更改段並且不必在所有視圖中編輯Request :: segment(1)(如果您有更多)

用途: View::share('section', Request::segment(1));

然後在每個視圖中獲得與價值:$section

+0

謝謝,但我的導航是直接插入到佈局中的局部視圖 – 3rgo 2014-10-10 14:06:28

相關問題