2015-06-08 35 views
7

Benim laravel düzen şu anda yalnızca bir stil ekleyin (navbar vb .. kaldırıldı):laravel 5 - belirli bir sayfa/denetleyici (sayfa özgü varlık) üzerine

<link href="//maxcdn.bootstrapcdn.com/bootswatch/3.3.4/flatly/bootstrap.min.css" 
    rel="stylesheet"> 
<link href="{{ asset('/css/app.css') }}" rel="stylesheet"> 

<!-- Fonts --> 
<link href='//fonts.googleapis.com/css?family=Roboto:400,300' rel='stylesheet' 
    type='text/css'> 

<!-- Scripts --> 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 

<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> 
<!-- WARNING: Respond.js doesn't work if you view the page via file:// --> 
<!--[if lt IE 9]> 
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> 
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> 
    <![endif]--> 
</head> 
<body> 

    <div class="container"> 

     @yield('content') 

    </div> 

    <!-- Scripts --> 
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> 
    <script src="{{ asset('assets/vendor/toastr/toastr.min.js') }}"></script> 
</body> 
</html> 

Sonra bir görünüm eklemek düzen:

@extends('app') 

@section('content') 

Content here. 

@endsection 

Kafam karıştı gelince, ben clinicController.php veya bir klinik güzergahı içinde olmam durumunda (bir kaynaktır), örneğin demek, o zaman "enjekte" bir stil ve JavaScript dosyası için uygun yerlere.

Bunu yapmanın bir yolu var mı? @if on a certain page, display this'un işe yarayacağını tahmin ediyorum ama eminim ki bunu yapmak için daha çok "Laravel" yolu olmalı?

Herhangi bir yardım büyük ölçüde takdir edilecektir.

cevap

21

Örneğin, sizin view aşağıdaki gibi bir section yaratabilir:

<!--Static StyleSheets--> 
<link href="{{asset('assets/css/common-style.css')}}" rel="stylesheet" /> 

<!--Dynamic StyleSheets added from a view would be pasted here--> 
@yield('styles') 

aynı script etiketler için de geçerlidir: Örneğin, senin layout de Sonra

@extends('layouts.master') 

@section('styles') 
    <link href="{{asset('assets/css/custom-style.css')}}" /> 
@stop 

, @yield örneğin, (A layout, şu şekilde görünebilir: styles/scripts):

<html> 
    <head> 
     <!--Static StyleSheets--> 
     <link href="{{asset('assets/css/common-style.css')}}" /> 

     <!--Dynamic StyleSheets added from a view would be pasted here--> 
     @yield('styles') 
    </head/> 

    <!-- Template Body --> 
    <body> 
     <!-- Other HTML Elements --> 
     <div class="container"> 
      @yield('content') 
     </div> 

     <!-- Dump all dynamic scripts into template --> 
     @yield('scripts') 
    </body> 
</html> 

Güncelleme:

@extends('layouts.master') 

@section('content') 
    <!-- Content --> 
@endsection 

<!-- Push a style dynamically from a view --> 
@push('styles') 
    <link href="{{asset('assets/css/common-style.css')}}" /> 
@endpush 

<!-- Push a script dynamically from a view --> 
@push('scripts') 
    <script src="/example.js"></script> 
@endpush 

Şablon:

<html> 
    <head> 
     <!--Static StyleSheets--> 
     <link href="{{asset('assets/css/common-style.css')}}" /> 

     <!--Dynamic StyleSheets added from a view would be pasted here--> 
     @stack('styles') 
    </head/> 
    <!-- Template Body --> 
    <body> 

     <!-- Other HTML Elements --> 
     <div class="container"> 
      @yield('content') 
     </div> 

     <!-- Dump all dynamic scripts into template --> 
     @stack('scripts') 

    </body> 
</html> 
+1

Mükemmel belirtin belirleyin. Çok teşekkürler @ Alpha! – Ben

+1

En çok hoşgeldin :-) –

+0

Şu anda bunu anlamakta tam olarak aynı zorluğa sahibim.Tam olarak Alpha'nun üstündeki örnek için giriş noktası tam olarak mı? – alaboudi

4
A View In

: laravel 5.2, örneğin, styles/scripts için Stacks kullanmak mümkündür yana

Eğer benim gibi iseniz ve bu çöplüğü düşünmekten hoşlanmıyorsanız Adlandırılan Rotalar

@if (in_array(Route::currentRouteName(), ['profile', 'register'])) 
    <script src="example.js"></script> 
@endif 

YA (yukarıdaki ile aynı) kullanma durumunda

: Birden görünüm dosyalarında e komut, aşağıdakilerden herhangi birini kullanarak şablonunda bir sürdürülebilir şekilde yapabiliriz

@if (in_array(\Request::route()->getName(), ['profile', 'register'])) 
    <script src="example.js"></script> 
    <script src="another.js"></script> 
@endif 

yerine Kontrolör Eylemler

için Check
@if (in_array(substr(Route::currentRouteAction(), strpos(Route::currentRouteAction(), '@')+1), ['create', 'edit'])) 
    <script src="example.js"></script> 
    @endif 

bu mükemmel çalışıyor, bir Kontrolör Ve Eylem

@if (in_array(substr(Route::currentRouteAction(), strpos(Route::currentRouteAction(), 'Controllers')+12), ['[email protected]', '[email protected]'])) 
    <script src="example.js"></script> 
    @endif