Hello, You
Si vous avez suivi le tutoriel Hello, World, alors vous êtes prêt pour ce nouveau défi.
L'objectif est de proposer un formulaire permettant de saisir le nom de l'internaute afin de lui souhaiter la bienvenue par la suite.
Commençons par la vue
Dans application/templates
créez un fichier nommé
@base.html
avec le contenu suivant :
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>{$title}</title>
<link rel="stylesheet" href="public/css/w3.css">
<style>
body {
padding: 3%;
}
</style>
</head>
<body>
{block content}
{/block}
</body>
</html>
Le premier élément nouveau dans ce gabarit est l'utilisation d'une balise
Latte. La balise {$title}
permettra de définir le titre de la page (qui sera affiché dans la barre de
titre du navigateur ou dans l'onglet de la page).
La deuxième nouveauté est la définition d'un bloc nommé
content
.
Le système de gabarits Latte supporte la notion d'héritage : les balises
{block content}
et {/block}
permettent de définir un
bloc nommé content
qui sera surchargé dans les gabarits
enfants.
Dans application/templates/home
, créez un fichier nommé
index.html
avec le contenu suivant :
{layout '@base.html'}
{block content}
<form action="{=BASE_URL}sayhello" method="post" enctype="multipart/form-data" class="w3-container">
<label for="name">Saisir votre nom</label>
<input type="text" name="name" class="w3-input"><br>
<input type="submit" name="submit" class="w3-btn w3-green" value="Envoyer">
</form>
{/block}
La balise {layout}
permet d'indiquer que l'on hérite du gabarit
de base @base.html
.
Ici nous utilisons la constante prédéfinie BASE_URL
via une
balise Latte.
Créez à présent dans application/templates/home
un fichier
nommé sayhello.html
avec le contenu suivant :
{layout '@base.html'}
{block content}
<p class="w3-panel">Hello, {$name} !</p>
{/block}
Le gabarit sayhello.html
hérite également du gabarit de base
@base.html
.
La balise {name}
permettra d'afficher le nom de
l'internaute.
Implémentation des actions
Reprenons notre contrôleur HomeController
et modifions le comme
suit :
<?php
namespace controllers;
class HomeController extends \ActionController {
public function doIndex() {}
public function doSayHello() {
$this->title = 'Hello, You !';
$this->name = $this->request->getParameters()->getAlnum( 'name' );
}
}
La méthode d'action doIndex()
affiche le formulaire.
La méthode d'action doSayHello()
affiche le nom de l'internaute
après validation du formulaire.
Routage
Nous allons définir une nouvelle route.
Éditez config/routes.json
et modifiez-le comme suit :
[
["GET", "", "controllers\\HomeController@index"],
["POST", "sayhello", "controllers\\HomeController@sayhello"]
]
Rendez vous sur l'URL http://localhost.