Laravel – Première route

Par Nouvelle-Techno.fr le 21 décembre 2017 - Catégories : MVC Laravel Tutoriel

Lire l'article sur le site d'origine

Nous allons ci-dessous créer notre page d’accueil et notre première route.

Pré-requis : le .htaccess

Afin de faire fonctionner les routes utilisées par le framework Laravel, nous allons utiliser le module de réécriture d’URL de notre serveur Apache.

Le fichier .htaccess contenu dans le dossier public est le suivant :

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Mais que font ces différentes lignes ?

Première route

Avec Laravel, nous allons écrire les routes dans le fichier web.php situé dans le dossier routes.

Par défaut, nous avons accès à une route pour la page d’accueil qui est écrite sous cette forme :

Route::get('/', function () {
    return view('welcome');
});

Ces lignes permettent d’afficher la page d’accueil en suivant le principe du MVC.

Dans un premier temps, Laravel utilise des « façades » qui permettent de simplifier la syntaxe d’écriture.

Ici, nous utilisons la « façade » Route qui permet d’appeler le routeur.

Nous pourrions remplacer Route::get par $this->app[‘router’]->get qui est plus complexe mais donnera le même résultat.

Nous créons donc une route vers / (page d’accueil) qui utilisera la méthode get, et qui ne fera qu’une seule chose, afficher une vue.

Dans ce cas précis, nous avons écrit notre « contrôleur » directement dans le fichier web.php.

Nous verrons par la suite comment séparer ce contrôleur.

ATTENTION : Le contrôleur DOIT OBLIGATOIREMENT se terminer par un return

La vue

Notre contrôleur affiche la vue ‘welcome’ située dans le dossier resources/views.

La fonction view(‘welcome’) ira chercher le fichier welcome.blade.php situé dans le dossier resources/views, et le contrôleur l’affichera (return).

Ce fichier contient ceci

<!doctype html>
<html lang="{{ app()->getLocale() }}">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel</title>
        <!-- Fonts -->
        <link href="https://fonts.googleapis.com/css?family=Raleway:100,600" rel="stylesheet" type="text/css">
        <!-- Styles -->
        <style>
            html, body {
                background-color: #fff;
                color: #636b6f;
                font-family: 'Raleway', sans-serif;
                font-weight: 100;
                height: 100vh;
                margin: 0;
            }
            .full-height {
                height: 100vh;
            }
            .flex-center {
                align-items: center;
                display: flex;
                justify-content: center;
            }
            .position-ref {
                position: relative;
            }
            .top-right {
                position: absolute;
                right: 10px;
                top: 18px;
            }
            .content {
                text-align: center;
            }
            .title {
                font-size: 84px;
            }
            .links > a {
                color: #636b6f;
                padding: 0 25px;
                font-size: 12px;
                font-weight: 600;
                letter-spacing: .1rem;
                text-decoration: none;
                text-transform: uppercase;
            }
            .m-b-md {
                margin-bottom: 30px;
            }
        </style>
    </head>
    <body>
        <div class="flex-center position-ref full-height">
            @if (Route::has('login'))
                <div class="top-right links">
                    @if (Auth::check())
                        <a href="{{ url('/home') }}">Home</a>
                    @else
                        <a href="{{ url('/login') }}">Login</a>
                        <a href="{{ url('/register') }}">Register</a>
                    @endif
                </div>
            @endif
            <div class="content">
                <div class="title m-b-md">
                    Laravel
                </div>
                <div class="links">
                    <a href="https://laravel.com/docs">Documentation</a>
                    <a href="https://laracasts.com">Laracasts</a>
                    <a href="https://laravel-news.com">News</a>
                    <a href="https://forge.laravel.com">Forge</a>
                    <a href="https://github.com/laravel/laravel">GitHub</a>
                </div>
            </div>
        </div>
    </body>
</html>

La syntaxe de ce fichier peut paraître déroutante à priori mais elle est relativement simple à appréhender et basée sur le moteur Blade.

Nous verrons dans un prochain article comment utiliser les différentes fonctions proposées par Blade.

Ce fichier contient le code html d’une page complète, du doctype à la balise /html.

Nous avons donc maintenant une meilleure compréhension de la mise en place d’une route et d’un contrôleur, et de l’affichage de la vue correspondante.

Obtenir de l'aide

Pour obtenir de l'aide, vous pouvez accéder aux forums de Nouvelle-Techno.fr ou au serveur Discord pour une entraide par chat

#Tutoriel #Framework #Laravel #MVC #Routes