Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestire gli asset del progetto

In questa lezione vedremo come aggiungere gli asset statici e definire i primi blocchi da utilizzare nel nostro progetto basato su Symfony
In questa lezione vedremo come aggiungere gli asset statici e definire i primi blocchi da utilizzare nel nostro progetto basato su Symfony
Link copiato negli appunti

Nei precedenti capitoli abbiamo imparato il set minimo di strumenti necessari per gestire i nostri template ma non abbiamo ancora visto come inserire nelle nostre pagine degli asset statici: fogli di stile, file Javascript, immagini etc.

In questa lezione iniziamo realmente a "sporcarci le mani" aggiungendo gli asset statici e definendo i primi blocchi che utilizzeremo nel nostro progetto.

Nella directory resources/visual abbiamo dei template HTML statici che rappresentano un'anteprima di come implementeremo alcune pagine; ci sono inoltre file CSS, JS, font e immagini necessarie per renderizzare al meglio le pagine. Vediamo insieme come iniziare a spostare questi file all'interno del progetto.

Iniziamo con gli asset statici che per adesso ci limiteremo a copiare all'interno della directory public di Symfony in maniera che possa essere accessibile anche dall'esterno. Possiamo farlo, copiando e incollando la directory o attraverso il terminale, dall'esterno del container lanciando il comando:

$ cp -r resources/visual/assets app/public

Per verificare che tutto funzioni correttamente possiamo includere un foglio di stile all'interno del nostro template di base. Per fare ciò apriamo il file app/templates/base.html.twig stylesheets

<link href="{{ asset('assets/css/bootstrap.min.css') }}" rel="stylesheet"/>

Aprendo la home page dovremmo vedere il font della pagina modificato, dato che il foglio di stile di Bootstrap

Se tutto funziona correttamente possiamo iniziare a riempire il tag <head> con quanto contenuto nel medesimo tag nei nostri template e aggiungere i Javascript in tutte le pagine. Apriamo il template resources/visual/home.html e copiamo tutto il tag <head>. A questo punto per completare il lavoro dobbiamo:

  • wrappare tutti gli asset statici importati all'interno della funzione di Twig asset()
  • Aggiungere la lingua al template in modo che venga presa dalla request.
  • Copiare i Javascript contenuti in fondo al template adattando anch'essi con la funzione asset()

Il nostro nuovo template di base sarà:

<!DOCTYPE html>
<html lang="{{ app.request.locale }}">
 <head> <meta charset="utf-8"/>
 <link rel="apple-touch-icon" sizes="76x76" href="{{ asset('assets/img/apple-icon.png') }}">
 <link rel="icon" type="image/png" href="{{ asset('assets/img/favicon.png') }}">
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
 <title>{% block title %}Welcome!{% endblock %}</title>
 <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no'
  name='viewport'/>  

  {% block stylesheets %}
  <!--     Fonts and icons     -->
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Montserrat:400,700,200"/>
  <link rel="stylesheet" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css" crossorigin="anonymous">
  <!-- CSS Files -->
  <link rel="stylesheet" href="{{ asset('assets/css/bootstrap.min.css') }}"/>
  <link rel="stylesheet" href="{{ asset('assets/css/now-ui-kit.css') }}"/>
  {% endblock %}
  </head>
 <body>
 {% block body %}{% endblock %}
 {% block javascripts %}
  <!--   Core JS Files   -->
  <script src="{{ asset('assets/js/core/jquery.min.js') }}" type="text/javascript"></script>
  <script src="{{ asset('assets/js/core/popper.min.js') }}" type="text/javascript"></script>
  <script src="{{ asset('assets/js/core/bootstrap.min.js') }}" type="text/javascript"></script>
  <script src="{{ asset('assets/js/now-ui-kit.js?v=1.3.0') }}" type="text/javascript"></script>
  {% endblock %}
  </body>
</html>

Importiamo infine la home page dai nostri template all'interno di Symfony. Come prima cosa prendiamo tutto il contenuto del tag <body> body app/templates/home/index.html.twig

Ci sono diversi asset statici che necessitano lo stesso trattamento fatto per il template di base; andiamo quindi a wrappare il tutto con la funzione asset() di Twig.

Una volta effettuato il lavoro di replacement degli asset, provando a caricare la pagina ci accorgeremo che non è sicuramente uguale a quella statica. Questo perché manca un ultimo step importante. Nel template statico il body ha delle classi che non abbiamo riportato. Dato che il tag <body> è contenuto nel template di base e queste classi possono cambiare in base alla pagina che stiamo navigando, potrebbe essere utile definire un blocco in cui includerle.

Nel template base avremo quindi:

<body class="{% block body_classes %}{% endblock %}">

mentre nel template della home page aggiungeremo il blocco:

{% block body_classes %}profile-page sidebar-collapse{% endblock %}

A questo punto abbiamo inserito la nostra prima pagina statica in Twig. Consideriamolo chiaramente un punto di partenza e non di arrivo, la pagina cambierà in fretta e verrà suddivisa sicuramente in parti più piccole. Dato che il suo contenuto necessita di essere loggati possiamo temporaneamente metterla da parte ed iniziare a dedicarci al Login.

Il codice della lezione è disponibile con il tag static-assets all'interno del repository.

Ti consigliamo anche