У меня есть несколько файлов с частичным лезвием, для которых требуется всего лишь немного JavaScript. В идеале я бы хотел, чтобы частичная загрузка JS была им нужна, и обычный JS не включил его. Я знаю, что вы можете загрузить все это в один большой JS-файл, но мне интересно, есть ли способ получить более элегантное решение.
Я хотел бы, чтобы приведенное ниже решение работало для нескольких файлов (оно работает для одного, но не для n. Первые частичные стыки с blade-сервером используются из-за механизма рендеринга blade-сервера).
test.page.blade.php
@extends('layouts.default') @section('title', 'Poses') @section('content') <div class="container"> <div class="row"> @include('test.partial.one') @include('test.partial.two') </div> </div> @stop @section('javascript') @include('test.partial.one') @include('test.partial.two') @stop
частичный test.partial.one.blade.php
@section('content') <h1>One</h1> @stop @section('javascript') <script>Scripts from one</script> @stop
partial test.partial.two.blade.php
@section('content') <h1>Two</h1> @stop @section('javascript') <script>Scripts from two</script> @stop
Решение вашей проблемы – это директива @parent
, которую вы должны использовать в своих разделах javascript
.
test.page.blade.php
@extends('layouts.default') @section('title', 'Poses') @section('content') <div class="container"> <div class="row"> @include('test.partial.one') @include('test.partial.two') </div> </div> @stop @yield('javascript')
test.partial.one.blade.php
@section('content') <h1>One</h1> @stop @section('javascript') <script>Scripts from one</script> @parent @stop
test.partial.two.blade.php
@section('content') <h1>Two</h1> @stop @section('javascript') <script>Scripts from two</script> @parent @stop
Дополнительная информация: http://laravel.com/docs/5.0/templates