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.