06 Le views in laravel

Le viste sono dei file .php oppure .blade.php, che contengono e permettono di lanciare un template per la visualizzazione HTML sul browser.

Creiamo un nuovo controller che si occuperà di visualizzare la rispettiva vista a seconda della pagina richiesta

php artisan make:controller PageController

Nel PageController creiamo i metodi incaricati di caricare la vista di una pagina, per esempio carichiamo la vista about che restituisce un messaggio di testo

public function about() {
   return 'Chi sono';
 }

prima di completare il metodo andiamo a creare la viewpage page.php in routes per definire le rotte delle pagine e al suo interno definiamo la rotta about

use App\Http\Controllers\PageController;

Route::get('/about', [PageController::class,'about']);

Definiamo la pagina nel provider RouteServiceProvider e proviamo ad aprire http://localhost:8000/pages/about

Route::prefix('pages')
 ->middleware('web')
 ->group(base_path('routes/page.php'));

Un’operazione da effettuare per non entrare in conflitto con le rotte è quella di caricare la rotta web per ultima nel provider per dare precedenza alle altre rotte delle altre pagine

metodo helper view()

Per restituire il nome di una vista e fare in modo che laravel carichi il template file per quella vista, utilizziamo il metodo predefinito views()

class PageController extends Controller
{
 public function about() {
  return view('about');
 }
}

in questo modo laravel caricherà il file about.php oppure about.blade.php dentro la cartella resources / views

<h1>Pagina About</h1>

Il metodo views() si trova nel file helpers.php nella cartella framework\src\Illuminate\Foundation che a sua volta lancia il metodo app() ricevendo come parametro l’intefaccia ViewFactory.

In questo modo Laravel con il suo metodo view() permette di caricare agevolmente il file template specificato come primo parametro.

Uso di facades

Un altro modo di effettuare questa operazione è quello di utilizzare una facade importando le faceades View

use Illuminate\Support\Facades\View;

Si può anche non specificare tutto il percorso, e scrivere in questo modo

use View;

adesso possiamo caricare la facade con il metodo statico View::make() che conterrà il nome della view

public function about() {
 return View::make('about');
}

la view about sarà caricata ugualmente.

Se andiamo ad analizzare vediamo che la facade View:: viene caricata come classe nel file ide_helper.php che abbiamo aggiunto. La classe estende la Factory

* @see \Illuminate\View\Factory

Nella classe vediamo che viene restituito il metodo make() che chiama la view.

Tutta questa parte dove vengono definite e create le views, si possono trovare nel file Application.php in vendor\laravel\framework\src\Illuminate\Foundation nella funzione registerCoreContainerAliases()

public function registerCoreContainerAliases()

In questo metodo vengono inizializzati molti metodi, richiamati poi con le funzioni helpers o con le facades, entrambi si riferiscono agli stessi metodi e restituiscono lo stesso risultato.

Quindi si può utilizzare un modo o un altro a completa discrezione.