Les contenus du cours BRE03 Web Dev Course © 2024 par Mari Doucet sont sous licence CC BY-NC-SA 4.0
À partir de maintenant nos projets vont utiliser plusieurs fichiers, nous allons donc faire la différence entre :
.phtml
..php
.require
est une fonctionnalité native de PHP qui permet d’injecter le code d’un fichier dans un autre.
Pour l’instant, vous allez surtout l’utiliser pour afficher le contenu de vos templates (les fichiers .phtml
) depuis vos fichiers .php
.
Au fur et à mesure des nouveaux modules, vous l’utiliserez pour des nouvelles choses.
Utiliser require c’est assez simple :
require "chemin/du/fichier.phtml";
Donc si par exemple, vous avez un fichier home.phtml
dans un dossier templates
:
require "templates/home.phtml";
Lorsque require injecte le contenu d’un fichier, le code dans le fichier injecté a accès au code déclaré avant lui mais pas celui déclaré après :
template.phtml
<h1>
<?= $title ?>
</h1>
<p>
<?= $content ?>
</p>
Si votre fichier index.php
ressemble à ceci :
index.php
$title = "Le titre de la page";
require "template.phtml";
$content = "Le contenu de la page";
Votre titre va bien être injecté, mais votre contenu, déclaré après le require n’est pas disponible dans template.phtml
.
Vous devez modifier votre fichier comme ceci pour faire fonctionner le code :
index.php
$title = "Le titre de la page";
$content = "Le contenu de la page";
require "template.phtml";
Pour démarrer un projet PHP, vous avez besoin de l’architecture de dossiers et fichiers suivante (elle évoluera au fur et à mesure que vous apprenez de nouvelles notions) :
- assets
- styles
- javascript
- controllers
- templates
index.php
assets
c’est le dossier qui contiendra vos fichiers SASS, CSS et JavaScript.
controllers
c’est le dossier qui contiendra vos fichiers de logique PHP, donc vos fichiers .php
, à l’exception de votre index.php
qui sera toujours à la racine de votre projet.
templates
c’est le dossier qui contiendra vos templates qui contiennent votre code HTML, donc vos fichiers .phtml
.
index.php
est l’unique fichier d’entrée de votre site, c’est le seul fichier que vous allez lancer (run sur l’IDE et sur VS Code).
Lien des consignes de l’exercice sur require
<form method="" action="">
</form>
En HTML, un <form>
possède deux attributs qui nous intéressent particulièrement côté PHP, la method
et l’action
.
La method
peut prendre deux valeurs : get
ou post
(si vous mettez une méthode qui n’existe pas ou bien si vous ne précisez pas de méthode, get
sera utilisé).
get
et post
correspondent à la méthode HTTP qui sera utilisée pour appeler le fichier ou l’URL précisé dans l’action
.
<form method="get" action="contact.php">
</form>
Dans l’exemple ci-dessus, le formulaire enverra ses infos au fichier contact.php
avec la méthode get
.
<form method="post" action="controllers/create-user.php">
</form>
Dans cet exemple, le formulaire enverra ses infos au fichier controllers/create-user.php
avec la méthode post
.
Sauf en cas de formulaire de recherche, vos formulaires devraient utiliser la méthode post
.
Ce qui nous intéresse côté PHP, ça va être de récupérer les informations du formulaire pour en faire autre chose plus tard (sauvegarder dans une base de données, envoyer un message, envoyer à une API, …).
Lorsqu’un formulaire est soumis, les valeurs du formulaire sont envoyées au serveur PHP et notre code peut y accéder dans deux variables différentes :
$_GET
est un tableau associatif qui contient les valeurs envoyées par un formulaire avec la méthode get
$_POST
est un tableau associatif qui contient les valeurs envoyées par un formulaire avec la méthode post
index.html
<form method="post" action="test.php">
<input type="text" name="textName" id="textId" />
<button type="submit">Envoyer</button>
</form>
test.php
<?php
print_r($_POST);
?>
Les clés des tableaux associatifs $_GET
et $_POST
correspondent aux attributs name
des champs du formulaire HTML.
<form method="post" action="test.php">
<h1>
Sélectionnez vos 3 couleurs préférées :
</h1>
<label for="yellow">
Jaune
</label>
<input type="checkbox" id="yellow" name="color[]" value="jaune">
<label for="blue">
Bleu
</label>
<input type="checkbox" id="blue" name="color[]" value="bleu">
<!-- ... -->
<button type="submit">Envoyer</button>
</form>
Dans le cas de checkboxes multiples, votre PHP recevra un tableau des checkboxes sélectionnées.
Lien des consignes des exercices sur les formulaires
Une différence entre get
et post
c’est que lorsque vous utilisez la méthode get
les champs de votre formulaire vont apparaitre dans l’URL.
Ce qui nous interesse c’est surtout que la variable $_GET
en PHP nous permet de récupérer les paramètres passés dans l’URL.
Par exemple si l’URL de votre page est test.php?name=Hugues&age=98
, les variables seront disponibles dans $_GET
pour votre page test.php
:
echo $_GET["name"]; // Hugues
echo $_GET["age"]; // 98
Cela va vous permettre de transmettre des informations d’une page à l’autre dans vos liens :
<a href="index.php?page=a-propos">Lien vers la page À propos</a>
<a href="index.php?page=article&article_id=21">Lien vers un article</a>
Vous allez même pouvoir rendre certains liens dynamiques :
<?php
$article_id = 42;
?>
<a href="index.php?page=article&article_id=<?= $article_id ?>">Lien vers un article</a>
Lien des consignes de l’exercice de routing