2014-02-20 52 views
0

我已經有一個不同的樣板包括,一個是:使用包括在不同情況下

@include('nav') 

我想用相同的樣板爲我的網站的CMS,但使用不同的導航。

會是什麼讓樣板包括當用戶使用CMS不同的導航的最佳方式:

@include('nav-cms') 

回答

0

這更多的是一個建築的問題,答案是,你也許可以做很多很多的方法。然而,問題的答案可以Laravel特定的,所以這裏有雲:

一種方法是改變include語句是:

@include($navView) 

,然後要麼在你的控制器,或使用View Composer,您應該適當地設置該變量。

另外,也可以使用部分做到這一點:

// layout.blade.php 
<html> 
    <head></head> 
    <body> 
     @section('nav') 
      @include('nav') 
     @show 

     @yield('content') 
    </body> 
</html> 

// some-frontend-view.blade.php 
@extends('layout') 

@section('content') 
    Content here 
@stop 

// some-cms-view.blade.php 
@extends('layout') 

@section('nav') 
    @include('nav-cms') 
@overwrite 

@section('content') 
    CMS content here 
@stop 

它假定前端導航這樣的話,然後你重寫它的CMS的CMS導航。或者,也可以使用@yield,而不是在佈局中默認使用「nav」,並在文件中指定它,如some-cms-view.blade.php文件中所示。

+0

謝謝,一個很好的答案。我決定現在爲CMS創建一個單獨的樣板。我只是想知道,你知道如何命名空間的意見。例如,在我的視圖中,我現在有一個名爲CMS的文件夾,裏面是CMS的樣板。樣板文件夾中還存在樣板文件。當我擴展每個CMS模板時:@extends('boilerplate'),是否有一種簡單的方法來指定使用哪種樣板文件? – panthro

+0

或者只是放入@extends('cms/boilerplate'),還是有更好的方法? – panthro

+0

你使用點,但否則是隻是按照目錄結構。我認爲Laravel將軍的慣例是保持小寫,但我想你可以按照你的意願去做。 – alexrussell

相關問題