In primo luogo, quando si estende un layout in una vista, si avvia una sezione e si "interrompe". Mi piace:
@section('header')
@parent
{{ HTML::script('js/anotherjs.js') }}
@stop
Come stai estendendo i layout? Non sono sicuro che tu abbia più layout che si estendono l'un l'altro e che siano poi estesi per visualizzazioni o che tu abbia più viste, ciascuna estendendo questo particolare layout. Ora, nel caso successivo, una vista non avrà alcun effetto sull'altra vista.
Se si utilizza l'approccio precedente, un altro codice di esempio potrebbe essere utile in quanto ritengo che si stia scrivendo i valori in un determinato momento.
Spero che aiuti.
EDIT
Quando si dice:
<header>
@yield('header_bar')
@yield('nav_bar')
@yield('search_bar')
</header>
Si stanno facendo i segnaposto con tre nomi diversi. Pertanto, nav_bar, search_bar non sono viste secondarie, ma sono segnaposti che possono essere popolati dalle tue visualizzazioni.
Lasciatemelo mettere in un altro modo. Quando le tue viste estendono un modello, riempiranno gli spazi dichiarati nel modello. Pertanto, ciascuna delle voci "header", "search_bar" ecc. Deve essere riempita con spazi vuoti ONCE. Quindi, se hai una vista denominata index.blade.php, puoi riempirla una volta. Quindi puoi avere index.blade.php in questo modo:
@section('header')
@parent
{{ HTML::script('js/anotherjs.js') }}
@stop
@section('header_bar')
@parent
{{ HTML::script('js/yetanotherjs.js') }}
@stop
@section('nav_bar')
@parent
{{ HTML::script('js/foojs.js') }}
@stop
@section('search_bar')
@parent
{{ HTML::script('js/foojs.js') }}
@stop
Ora, se guardiamo a questo, ciò che sarà risultato è:
<!DOCTYPE html>
<html>
<head>
@section('header')
{{ HTML::style('css/planesaleing.css') }}
{{ HTML::script('js/jquery-1.10.1.js') }}
{{ HTML::script('js/search_Bar.js') }}//from parent till this point
{{ HTML::script('js/anotherjs.js') }} //comes from view
@show
</head>
<body>
<div class="planesaleing_page">
<header>
{{ HTML::script('js/yetanotherjs.js') }} //comes in place of header_bar as nothing in parent
//@yield('header_bar')
{{ HTML::script('js/foojs.js') }}//comes in place of nav_bar as nothing in parent
//@yield('nav_bar')
{{ HTML::script('js/foojs.js') }}//comes in place for search_bar as nothing in parent
//@yield('search_bar')
</header>
<div class="main_page">
// Some more code
</div>
@yield('footer')
</div>
</body>
</html>
Questo è il motivo per solo il primo sembra essere l'estensione del master. Penso che dovresti riconsiderare il modo in cui stai cercando di estendere il master.
cosa può funzionare per voi è
@include('view.name') // includes a subview
Tuttavia io non sono sicuro se le sezioni saranno in cascata da ogni visualizzazione secondaria o no. Puoi provarlo.
Così avrete una vista chiamata index.blade.php che guarda alcuni ciò come:
@extends('master')
@include('search_bar')
@include('nav_bar')
@include('foo_bar')
e quindi si avrà come file separati search_bar.blade.php e altri che estenderanno master e riempire nei segnaposti come questo:
@extends('master')
@section('header')
@parent
{{ HTML::script('js/anotherjs.js') }}
@stop
Credo (non ha provato) che questo dovrebbe fare il tuo lavoro. Può quindi mettere in cascata gli input da tutte le sottoview e metterlo insieme come si desidera. Quindi tutte le sottoview popoleranno la sezione dell'header e questo dovrebbe essere messo insieme nell'output finale. Provalo e se funziona, GRANDE !! altrimenti prova un approccio diverso per iniettare gli script.
Ho modificato la domanda per fornire ulteriore chiarezza su ciò che sto cercando di ottenere ... In sostanza, sto cercando di fare la seconda cosa che hai citato ... –
modificato la risposta. provalo –