有沒有辦法在加載子視圖時將js加載到頁面的<head>
部分。我想只根據被調用的視圖加載特定的JS文件。我正在使用刀片模板引擎。在laravel中加載子視圖時加載js
回答
有一個更簡單的方法來做到這一點,使用節和模板的繼承。
- 首先,創建一個主佈局文件,像這樣: http://paste.laravel.com/UY9這是一個我使用包括 Initializr /引導。我把這個存儲在views/layouts/frontend /中,作爲
master.blade.php用於前端和views/layouts/admin /作爲 master.blade.php用於管理員並根據需要進行修改。 - 您會注意到以@show結尾的各種@section聲明。在末尾使用 @show代替@stop,允許您在其他視圖中覆蓋它們 ,您會注意到我已經添加了@section('scripts') 聲明。所以,你可以創建一個視圖,如下所示:
@extends('layouts.frontend.master')
@section('scripts')
Your Scripts
@stop
@section('content')
Your content
@stop
就這麼簡單。這是非常強大的功能,因爲它可以讓您設置默認值,但如果需要也可以覆蓋它,從而保持您的視圖非常乾淨和最小化。
一個更好的辦法來做到這一點,雖然是做:
@extends('layouts.frontend.master')
@section('head')
@parent
Your Scripts
@stop
@section('content')
Your content
@stop
然後你可以從你的總體佈局中刪除@section(「腳本」)聲明。使用@parent幫助程序將允許您將內容附加到某個部分,從而在添加您在視圖中指定的額外內容時保持默認狀態。
您還可以爲@yield聲明提供默認內容,如@yield('content','Default content')。
首先製作一個通用的頁眉佈局。
app/views/layouts/header.blade.php - header layout
<!DOCTYPE html>
<html>
<head>
<title>{{ $page->title }}</title> {{-- Getting title from $page object, which is passed from route --}}
{{ HTML::style('css/common.css') }}
{{ HTML::script('js/jquery.js') }}
{{ HTML::script('js/common.js') }}
然後網頁腳本具體佈局。
app/views/layouts/script-about.blade.php - about-page script layout
{{ HTML::script('js/about.js') }}
然後查看特定頁面。
app/views/about.blade.php - about page
@extends('layouts.master')
@section('content')
<p>About-Us page content goes here</p>
@stop
然後共同頁腳。
app/views/layouts/footer.blade.php - footer layout
</body>
</html>
然後主要佈局進行渲染。
app/views/layouts/master.blade.php - main layout
@include('layouts.header')
@include('layouts.script-'.$page->slug) {{-- Getting page name from $page object --}}
</head>
<body>
@yield('content')
@include('layouts.footer')
往返航線,可以通過$page
變量。你可能會喜歡這條路線,
Route::get('{slug}', function($slug) {
$page = Page::where('slug', '=', $slug)->first();
// getting the datas from Page model with pages table where slug = last uri in your address-bar
if (is_null($page)) { // if no page in db, call 404
App::abort(404);
}
// render the view with page details
return View::make($page->slug)->with(array('page' => $page));
});
在laravel 5.4作爲document
您可以簡單地使用堆疊(@stack和@push),以便能夠從子視圖(子視圖)加載CSS和JS說。
- 將
@stack
添加到您希望將JS文件或CSS文件從子視圖添加到佈局的佈局中。
這裏我將在佈局文件中定義兩個堆棧,一個用於CSS文件,一個用於JS文件。我給第一和例如styles
和scripts
我們希望在佈局文件
<head>
@stack('styles')
</head>
的一部分,被載入我們的CSS文件,讓我們說,我們要加入我們的腳本第二堆任意名稱右是用於結束標記 在佈局文件
@stack('scripts')
</body>
- 現在在子視圖我可以很容易地添加CSS和JS文件這樣
@push('styles') <style rel="stylesheet" href="{{asset('dropzone/dist/min/dropzone.min.css') }}" ></style> @endpush @push('scripts') <script src="{{ asset('dropzone/dist/min/dropzone.min.js') }}"></script> @endpush
- 1. 加載子視圖
- 2. Laravel未能加載視圖
- 3. 在Laravel 5.2的特定視圖中加載CSS和JS文件
- 4. 在加載視圖時加載圖像視圖
- 5. 加載MVP的子視圖
- 6. UITabBarController加載子視圖
- 7. 加載子視圖self.view
- 8. 延遲加載? /只在視口中可見時加載圖像
- 9. 顯示加載swf同時視圖在Flex中加載
- 10. 表視圖加載子視圖?
- 11. JS:加載圖像
- 12. JS加載圖像
- 13. 在codeigniter中加載視圖
- 14. 在Codeigniter中加載視圖
- 15. iPhone:添加「加載」子視圖
- 16. 加載視圖
- 17. 加載視圖
- 18. Laravel:發佈後加載視圖
- 19. 加載.html擴展名的laravel視圖
- 20. Laravel .blade視圖將不會加載
- 21. Laravel 4:加載外部視圖
- 22. 如何在子視圖加載時更改父視圖類名?
- 23. NIB視圖在加載時沒有子視圖
- 24. 讓視圖時加載
- 25. 在Laravel中加載子類別時查詢加倍結果
- 26. 正在加載表單時添加Ext JS加載時鐘圖標
- 27. 骨幹模板視圖和js加載
- 28. angular js重新加載視圖
- 29. 從子視圖中的UIButton加載tabBarController
- 30. 如何在加載新的TabBar視圖時卸載TabBar視圖?
救了我的天! :) –