Créer un formulaire avec CodeIgniter est une étape essentielle pour toute application web : inscription, connexion, ajout de produits, contact, recherche… tous ces éléments reposent sur un formulaire bien conçu. Dans ce tutoriel accessible aux débutants, nous allons explorer en détail comment créer, valider et traiter un formulaire avec CodeIgniter 4, à travers des exemples concrets et des explications pas-à-pas.
- Pourquoi utiliser un formulaire avec CodeIgniter 4 ?
- Préparer l’environnement
- Créer un formulaire avec CodeIgniter : premier exemple
- Fonctionnement du formulaire avec CodeIgniter
- Exemple de formulaire d’inscription avec validation
- Les avantages d’un formulaire avec CodeIgniter
- Formulaire avec CodeIgniter et données préremplies
- Upload de fichiers dans un formulaire avec CodeIgniter
- Formulaire avec CodeIgniter et AJAX
- Formulaire avec CodeIgniter en plusieurs étapes
- Personnaliser les messages de validation
- Sécurité des formulaires avec CodeIgniter
- Générer un formulaire avec CodeIgniter automatiquement
Pourquoi utiliser un formulaire avec CodeIgniter 4 ?
Utiliser un formulaire avec CodeIgniter permet de tirer profit du système MVC (Model – Vue – Controller) pour séparer les responsabilités : la logique dans les contrôleurs, l’affichage dans les vues, et la validation dans des règles définies proprement.
Grâce à son système intégré, CodeIgniter 4 facilite la gestion des formulaires : récupération sécurisée des données, protection CSRF, validation, affichage d’erreurs, etc. Tout cela rend un formulaire avec CodeIgniter robuste, maintenable et sécurisé.
Préparer l’environnement
Avant de créer un formulaire avec CodeIgniter, assure-toi d’avoir installé CodeIgniter 4 correctement. Voici les étapes rapides :
composer create-project codeigniter4/appstarter monprojet
cd monprojet
php spark serve
L’application sera accessible via http://localhost:8080.
Créer un formulaire avec CodeIgniter : premier exemple
Prenons un cas simple : un formulaire de contact. Il demandera :
- Le nom
- L’email
- Le message
La route avec CodeIgniter
Ajoute une route dans app/Config/Routes.php
:
$routes->get('contact', 'Contact::index');
$routes->post('contact/send', 'Contact::send');
Le contrôleur Contact.php
Crée un Controller : un fichier dans app/Controllers/Contact.php
:
namespace App\Controllers;
use CodeIgniter\Controller;
class Contact extends Controller
{
public function index()
{
return view('contact_form');
}
public function send()
{
$validation = \Config\Services::validation();
$rules = [
'name' => 'required|min_length[3]',
'email' => 'required|valid_email',
'message' => 'required|min_length[10]'
];
if (!$this->validate($rules)) {
return view('contact_form', [
'validation' => $this->validator
]);
}
// Traitement des données (ex: envoi de mail)
return view('contact_success');
}
}
La vue contact_form.php
Crée le fichier app/Views/contact_form.php
:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Formulaire de contact</title>
</head>
<body>
<h1>Formulaire de contact</h1>
<?php if (isset($validation)) : ?>
<?= $validation->listErrors() ?>
<?php endif; ?>
<form action="<?= base_url('contact/send') ?>" method="post">
<?= csrf_field() ?>
<label>Nom :</label>
<input type="text" name="name" value="<?= set_value('name') ?>"><br>
<label>Email :</label>
<input type="email" name="email" value="<?= set_value('email') ?>"><br>
<label>Message :</label>
<textarea name="message"><?= set_value('message') ?></textarea><br>
<button type="submit">Envoyer</button>
</form>
</body>
</html>
La vue de succès contact_success.php
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Merci</title>
</head>
<body>
<h1>Merci pour votre message !</h1>
</body>
</html>
Fonctionnement du formulaire avec CodeIgniter
Ce formulaire avec CodeIgniter utilise plusieurs outils du framework :
csrf_field()
: ajoute un token CSRF pour éviter les attaques.set_value()
: préremplit le champ avec la dernière valeur saisie (utile si erreur).validate()
: vérifie les règles de validation.$validator->listErrors()
: affiche les erreurs si validation échoue.
Grâce à ces outils, le formulaire avec CodeIgniter devient sécurisé et ergonomique.
Exemple de formulaire d’inscription avec validation
Voyons un second exemple plus complexe : un formulaire avec CodeIgniter pour créer un compte utilisateur. Pour allez plus loin, lisez notre Guide complet pour la connexion et l’accès sécurisé avec CodeIgniter.
Champs du formulaire
- Nom
- Prénom
- Mot de passe
- Confirmation du mot de passe
Contrôleur Register.php
namespace App\Controllers;
class Register extends BaseController
{
public function index()
{
return view('register_form');
}
public function submit()
{
$rules = [
'firstname' => 'required|min_length[2]',
'lastname' => 'required|min_length[2]',
'email' => 'required|valid_email|is_unique[users.email]',
'password' => 'required|min_length[6]',
'passconf' => 'matches[password]'
];
if (!$this->validate($rules)) {
return view('register_form', [
'validation' => $this->validator
]);
}
// Enregistrer l'utilisateur en base
$model = new \App\Models\UserModel();
$model->save([
'firstname' => $this->request->getPost('firstname'),
'lastname' => $this->request->getPost('lastname'),
'email' => $this->request->getPost('email'),
'password' => password_hash($this->request->getPost('password'), PASSWORD_DEFAULT)
]);
return view('register_success');
}
}
Les avantages d’un formulaire avec CodeIgniter
Utiliser un formulaire avec CodeIgniter présente de nombreux avantages :
- Validation centralisée et propre
- Préservation des données après erreur
- Affichage automatique des erreurs
- Sécurité intégrée (XSS, CSRF)
- Intégration facile avec des modèles
Bonnes pratiques pour un formulaire avec CodeIgniter
- Toujours utiliser
csrf_field()
pour protéger vos formulaires. - Affichez les messages d’erreur avec
listErrors()
ou champ par champ. - Stockez les règles de validation dans des classes si réutilisées souvent.
- Ne jamais faire confiance aux données utilisateur sans validation.
Formulaire avec CodeIgniter et données préremplies
Dans certains cas, un formulaire avec CodeIgniter est utilisé pour modifier une ressource existante. Par exemple, un formulaire d’édition de profil doit être prérempli avec les données de l’utilisateur.
Exemple de formulaire prérempli
Dans le contrôleur :
public function edit($id)
{
$model = new \App\Models\UserModel();
$user = $model->find($id);
return view('edit_profile', ['user' => $user]);
}
Dans la vue :
<input type="text" name="firstname" value="<?= esc($user['firstname']) ?>">
<input type="text" name="lastname" value="<?= esc($user['lastname']) ?>">
Avec ce code, ton formulaire avec CodeIgniter affiche les valeurs actuelles de l’utilisateur, prêtes à être modifiées.
Upload de fichiers dans un formulaire avec CodeIgniter
Ajouter un champ fichier dans un formulaire avec CodeIgniter est une fonctionnalité fréquente : photo de profil, CV, portfolio, image de produit…
Vue HTML
<form action="<?= base_url('upload') ?>" method="post" enctype="multipart/form-data">
<?= csrf_field() ?>
<input type="file" name="file">
<button type="submit">Envoyer</button>
</form>
Contrôleur
public function upload()
{
$file = $this->request->getFile('file');
if ($file->isValid() && !$file->hasMoved()) {
$newName = $file->getRandomName();
$file->move(WRITEPATH . 'uploads', $newName);
return "Fichier uploadé avec succès : " . $newName;
}
return "Erreur lors de l'upload";
}
CodeIgniter 4 gère très bien l’upload sécurisé. Il est crucial que ton formulaire avec CodeIgniter utilise l’attribut enctype="multipart/form-data"
.

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?Formulaire avec CodeIgniter et AJAX
Pour rendre ton formulaire avec CodeIgniter plus fluide, tu peux utiliser AJAX pour soumettre les données sans recharger la page.
Vue HTML + JS
<form id="ajaxForm">
<input type="text" name="email" placeholder="Votre email">
<button type="submit">Envoyer</button>
</form>
<div id="resultat"></div>
<script>
document.getElementById('ajaxForm').addEventListener('submit', function(e) {
e.preventDefault();
fetch('<?= base_url("ajax/send") ?>', {
method: 'POST',
body: new FormData(this)
})
.then(res => res.text())
.then(data => document.getElementById('resultat').innerHTML = data);
});
</script>
Contrôleur
public function send()
{
$email = $this->request->getPost('email');
// Traitement
return "Merci, $email a bien été reçu.";
}
Ton formulaire avec CodeIgniter devient réactif, rapide, et moderne avec seulement quelques lignes de JavaScript.
Formulaire avec CodeIgniter en plusieurs étapes
Un autre cas d’usage est le formulaire multi-étapes : on divise un long formulaire en plusieurs écrans. Cela améliore l’expérience utilisateur.
Stockage des données temporairement
Utilise les sessions pour stocker les données entre chaque étape :
public function etape1()
{
return view('form_etape1');
}
public function etape1Submit()
{
session()->set('etape1', $this->request->getPost());
return redirect()->to('form/etape2');
}
public function etape2()
{
return view('form_etape2');
}
Chaque vue représente une étape. Tu peux récupérer toutes les données en session à la fin pour les enregistrer.
Un formulaire avec CodeIgniter multi-étapes est très utile dans les formulaires de commande, d’inscription détaillée ou d’enquête.
Personnaliser les messages de validation
Tu peux personnaliser les erreurs dans ton formulaire avec CodeIgniter :
$rules = [
'email' => [
'rules' => 'required|valid_email',
'errors' => [
'required' => 'L\'email est obligatoire.',
'valid_email' => 'L\'email n\'est pas valide.'
]
]
];
Cela permet de rendre le formulaire avec CodeIgniter plus humain et adapté à ton public.
Utiliser des classes personnalisées de validation
Pour de gros projets, place tes règles dans des classes :
Créer une classe app/Validation/UserRules.php
namespace App\Validation;
class UserRules
{
public function isTroyes($str, string $fields, array $data)
{
return strtolower($str) === 'troyes';
}
}
Enregistrer dans app/Config/Validation.php
public $ruleSets = [
\App\Validation\UserRules::class,
];
Et dans le formulaire :
'ville' => 'required|isTroyes'
Sécurité des formulaires avec CodeIgniter
- Toujours utiliser
csrf_field()
dans chaque formulaire avec CodeIgniter - Valider et filtrer toutes les données utilisateurs
- Ne jamais exposer les données sensibles
- Stocker les mots de passe avec
password_hash()
Générer un formulaire avec CodeIgniter automatiquement
Tu peux aussi utiliser des fonctions helpers :
helper('form');
echo form_open('contact/send');
echo form_input('email', '');
echo form_submit('submit', 'Envoyer');
echo form_close();
Cela génère automatiquement le HTML de ton formulaire avec CodeIgniter.

Conclusion
Maîtriser un formulaire avec CodeIgniter est essentiel pour tout projet web. Grâce à son système puissant de validation, sa sécurité intégrée, sa simplicité de mise en œuvre et sa souplesse, CodeIgniter 4 est un excellent choix pour gérer des formulaires professionnels, ergonomiques et robustes.
Dans ce tutoriel, nous avons vu comment créer un formulaire avec CodeIgniter, le valider, gérer les erreurs, envoyer des fichiers, utiliser AJAX, construire des formulaires multi-étapes et même créer des règles personnalisées. Tu es maintenant capable de développer tous types de formulaires avec CodeIgniter 4.
Allez plus loin avec CodeIgniter 4 :
- La Programmation objet ou POO en PHP
- Route : Guide complet
- Controller : Guide complet
- Model : Guide complet
- La pagination avec CodeIgniter 4
- Envoi automatique de mail avec CodeIgniter 4
- Connexion à une base de données
- Gestion des Layouts
- Connexion et accès sécurisé
- 🔥 Vendredi 25 Avril 2025 >19h00
HTML & SémantiqueStructure d'une page HTML