2

所以,我基本上有一个需要预先加载 javascript 的组件。

主布局:

//layouts/master.blade.php
...
@yield('scripts')
...
@include('forms.search')
...

我的组件:

//forms/search.blade.php
@section('scripts')
some scripts here
@stop
...

我叫什么:

//main.blade.php
@extends('layouts.master')

这不起作用。部分未添加到标题中。我做错了什么还是用 laravel 根本不可能?

4

3 回答 3

1

您正在尝试在包含之前让出该部分。所以试试这个。

在你的//main.blade.php

@extends('layouts.master')

//layouts/master.blade.php

@include('forms.search')

//forms/search.blade.php

   some scripts here
于 2013-09-18T09:55:58.803 回答
0

你在打电话

@extends('layouts.master')

它有一个

@yield('scripts')

但是您正在声明部分脚本forms/search.blade.php

因此,如果您检查正确,则说明您在错误的刀片模板上声明了脚本,或者您将屈服区域放在了错误的刀片模板上。因为由于@yield 在 上layouts/master.blade.php,它已经在@include 之前执行,这确实不要扩展任何东西,所以声明@section 没有关系。

为了达到你想要的,

@section('scripts')
some scripts here
@stop 

部分应该在main.blade.php文件中..

如果我要这样做,那将是这样的:

布局/master.blade.php

<html>
    <head>
        <!-- more stuff here -->

        @yield('scripts')
        <!-- or put it in the footer if you like -->
    </head>
    <body>
        @yield('search-form')
        @yield('content')
    </body>
</html>

表格/search.blade.php

//do whatever here

主刀片.php

@extends('layouts/master')

@section('scripts')
    {{ HTML::script('assets/js/search-form.js') }}
@stop

@section('search-form')
    @include('forms/search')
@stop

@yield('search-form')完全删除master.blade.phpmain.blade.php上的内容:

@section('scripts')
    {{ HTML::script('assets/js/search-form.js') }}
@stop

@section('content')
    @include('forms/search')
    <!-- other stuff here -->
@stop
于 2013-09-18T13:08:09.333 回答
0

我遇到了同样的问题,它对我有用的是将“@parent”添加到我的所有部分......

{{-- Main area where you want to "yield" --}}
@section('js')
@show

@section('js')
  @parent

  {{-- Code Here --}}
@stop
于 2014-02-20T16:57:59.020 回答