domenica 18 novembre 2018

Estendere sezioni di template

Nel post precedente abbiamo visto come creare un template base ed estenderne il contenuto con una vista parziale.
Si usa la direttiva @yield per creare un punto di aggancio tra il template e la vista.
Tuttavia è frequente la casistica che vuole il template base avere una sezione già con contenuto, per esempio il footer, a cui la vista parziale deve solo aggiungere qualcosa senza però sovrascrivere tutto il contenuto del pezzo di template.

Per fare questo nel template base NON si usa più @yield ma si usa proprio una sezione @section come quando siamo nelle viste parziali.

<?php
<footer class="page-footer" style="background-color: black; color: white; padding-left:300px">
        <div class="container">
            <div class="row">
                    @section('footer')
                        Sono il footer - Realizzato da me 2018
                    @show
            </div>
        </div>
        <div class="footer-copyright">
            <div class="container">
            © 2018 Qualcuno                    
            </div>
        </div>
        <script src="https://code.getmdl.io/1.3.0/material.min.js"></script>

</footer>
?>

Nel footer creiamo una sezione che rappresenta il punto in cui possiamo far agganciare il pezzo della vista parziale. Qui nell'esempio la sezione "sensibile" è molto piccola perché racchiusa in un DIV ma è possibile farla anche più grande. Dovete solo considerare che quello che mettete viene aggiunto in coda.
IMPORTANTE: E' buona norma mettere il JAVASCRIPT in fondo alla pagina quindi conviene creare nel footer una sezione chiamata javascript dove le viste parziali possono aggiungere il loro codice javascript o includere js esterni.

Nella nostra vista parziale basta quindi creare la section come se dovessimo farla mettere in uno @yield ma preoccupandoci di mettere @parent per fare in modo di ereditare il pezzo del padre altrimenti il nostro lo sovrascriverebbe come se ci fosse @yield.

@section('footer')
   @parent
   - Sono una aggiunta
@stop

Il risultato finale della scritta nel footer sar: Sono il footer - Realizzato da me '2018 - Sono una aggiunta

Nessun commento:

Posta un commento