CodeExemple de validation de formulaire Igniter avec soumission de formulaire
Formulaire dans Codeallumeur
Les formulaires permettent aux utilisateurs d'interagir avec l'application et de soumettre des donnรฉes. Il peut รชtre utilisรฉ pour un formulaire de contact qu'un visiteur du site Web peut remplir et nous envoyer les informations. Les informations reรงues sont gรฉnรฉralement stockรฉes dans la base de donnรฉes ou envoyรฉes par e-mail.
Structure du formulaire HTML
Le code suivant montre la structure d'un formulaire HTML typique.
<form id="frmUsers" name="frmUsers" method="POST" action="create_user.php"> <input type="text" id="user_id" name="user_id"> <input type="password" id="password" name="password"> <input type="submit" value="Submit"> </form>
ICI,
- โฆ sont les balises d'ouverture et de fermeture du formulaire. Les attributs id et name spรฉcifient le nom et l'identifiant du formulaire. L'attribut mรฉthode spรฉcifie le verbe HTTP ร utiliser. Ceci est gรฉnรฉralement spรฉcifiรฉ par le verbe POST
- Spรฉcifie les รฉlรฉments du formulaire. L'attribut name est le nom de la variable qui est soumis au serveur principal pour traitement.
CodeAssistant de formulaire Igniter
Le HTML est gรฉnial, il est facile ร comprendre et ร รฉcrire, mais Codeallumeur cela simplifie encore les choses. CodeIgniter possรจde des fonctions intรฉgrรฉes pour crรฉer des formulaires HTML.
Considรฉrons ce qui suit CodeCode de soumission de formulaire Igniter utilisant l'assistant de formulaire pour crรฉer un formulaire
<?php
echo form_open('create_user.php', ['id' => 'frmUsers']);
echo form_label('User Id', 'user_id');
echo form_input(['name' => 'user_id']);
echo form_label('Password', 'password');
echo form_input(['type' => 'password', 'name' => 'password']);
echo form_submit('btnSubmit', 'Create User');
echo form_close();
?>
ICI,
- echo form_open('create_user.php', ['id' => 'frmUsers']); crรฉe la balise d'ouverture du formulaire, dรฉfinit l'action sur POST et dรฉfinit l'action URL pour crรฉer_utilisateur.php
- echo form_label('ID utilisateur', 'id_utilisateur'); crรฉe une รฉtiquette qui lit l'ID utilisateur pour le champ de saisie avec le nom user_id.
- echo form_input(['name' => 'user_id']); crรฉe un champ de saisie de type texte avec le nom user_id
- echo form_submit('btnSubmit', 'Crรฉer un utilisateur'); crรฉe un bouton de soumission avec le libellรฉ Crรฉer un utilisateur
- echo form_close(); ferme le formulaire
Comme vous pouvez le voir ci-dessus CodeAvec Igniter, les fonctions d'assistance de formulaires simplifient la crรฉation de formulaires en PHP pur. En passant des attributs aux mรฉthodes de ces fonctions, on peut personnaliser le code HTML gรฉnรฉrรฉ pour le formulaire.
Le code ci-dessus gรฉnรจre le code de formulaire HTML suivant
<form action="http://localhost:3000/index.php/create_user.php" id="frmUsers" method="post" accept-charset="utf-8">
<label for="user_id">User Id</label>
<input type="text" name="user_id" value=""/>
<label for="password">Password</label>
<input type="password" name="password" value=""/>
<input type="submit" name="btnSubmit" value="Create User"/>
</form>
Le plus grand avantage de lโutilisation de lโassistant de formulaire est quโil gรฉnรจre un code sรฉmantiquement correct qui adhรจre aux normes HTML dรฉfinies.
Vous pouvez vous rรฉfรฉrer au site officiel CodePour plus de dรฉtails, consultez la documentation Igniter.
https://codeigniter.com/user_guide/helpers/form_helper.html
CodeExemple de formulaire d'allumeur
Aprรจs avoir abordรฉ les bases de CodeIgniter, revenons ร notre projet tutoriel sur lequel nous avons travaillรฉ tout au long de ce projet. CodeSรฉrie de tutoriels Igniter. En rรฉsumรฉ, le projet du didacticiel crรฉe une application de gestion de contacts qui stockera les dรฉtails dans la base de donnรฉes.
Crรฉer un contact
dans le didacticiel prรฉcรฉdent, nous avons crรฉรฉ des itinรฉraires pour nos applications et des vues simples. Ouvrez application/views/contacts/create.php
Modifiez le code de create.php comme suit
<div class="column">
<h2 class="title">Create Contact</h2>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="name" name="name" class="input" type="text" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email" name="email" class="input" type="email" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
ร noter: le code ci-dessus utilise du HTML brut pour crรฉer des formulaires.
Voyons maintenant ร quoi ressemblent nos formulaires dans le navigateur Web
Charger les รฉlรฉments suivants URL dans notre navigateur web.
http://localhost:3000/contacts/create
Si vous avez crรฉรฉ le projet de didacticiel, vous devriez pouvoir voir ce qui suit
Validation de formulaire dans Codeallumeur
La validation joue un rรดle trรจs critique lors du traitement des donnรฉes des formulaires. Disons qu'un utilisateur s'inscrit sur un site Web ; nous voulons nous assurer qu'ils remplissent les informations et l'adresse e-mail requises. Nous devons nous assurer que l'adresse e-mail saisie est valide. Si nous travaillons avec des valeurs de date, nous voulons nous assurer que les plages de dates sont valides. Nous n'aurions pas ร accepter une date comportant 32 jours dans un mois, etc.
La validation rรฉsout les problรจmes ci-dessus. CodeLa validation Igniter est effectuรฉe sur deux (2) fronts lors de l'utilisation d'applications Web.
La validation cรดtรฉ client est effectuรฉe du cรดtรฉ du navigateur Web. Cela implique gรฉnรฉralement l'utilisation de HTML et JavaScript. La validation cรดtรฉ client amรฉliore les performances car tout est effectuรฉ cรดtรฉ client. Il n'est donc pas nรฉcessaire de soumettre les donnรฉes au serveur. L'inconvรฉnient de la validation cรดtรฉ client est que l'utilisateur en a le contrรดle. Si vous comptez sur JavaScript ร valider et l'utilisateur dรฉsactive JavaScript dans le navigateur, votre validation รฉchouera alors.
La validation cรดtรฉ serveur est effectuรฉe cรดtรฉ serveur. L'inconvรฉnient de cette validation est que l'utilisateur doit soumettre les donnรฉes au serveur pour traitement et attendre la rรฉponse. Cela utilise les ressources du rรฉseau et peut dรฉgrader les performances. Le principal avantage de la validation cรดtรฉ serveur est que vous avez un meilleur contrรดle et que vous รชtes assurรฉ que vos rรจgles de validation fonctionnent mรชme si l'utilisateur dรฉsactive JavaScript dans le navigateur.
Une meilleure stratรฉgie consiste ร utiliser le cรดtรฉ client comme stratรฉgie de validation principale et le cรดtรฉ serveur comme mรฉcanisme de secours.
Ajout de rรจgles de validation de formulaire
CodeIgniter possรจde une bibliothรจque de validation intรฉgrรฉe. Cette bibliothรจque est chargรฉe ร l'aide de la ligne suivante :
$this->load->library('form_validation');
Le CodeLa bibliothรจque de validation de formulaires Igniter peut รชtre utilisรฉe pour effectuer certaines des actions suivantes
- Vรฉrifiez les champs obligatoires. Ceci examine les valeurs soumises et renvoie une erreur si un champ qui a รฉtรฉ marquรฉ comme requis n'a pas de valeur.
- Validation du type de donnรฉes โ certains champs peuvent nรฉcessiter uniquement des valeurs numรฉriques. Si une valeur non numรฉrique est dรฉtectรฉe, la bibliothรจque renvoie une erreur. L'exรฉcution de la soumission du formulaire est รฉgalement interrompue.
- Validation de la longueur โ certains types de donnรฉes nรฉcessitent que les champs comportent un certain nombre minimum ou maximum de caractรจres. La bibliothรจque de validation est utile dans de tels cas.
- Dรฉsinfection des donnรฉes โ la bibliothรจque de validation dispose รฉgalement de fonctionnalitรฉs qui suppriment le code malveillant des donnรฉes soumises pour des raisons de sรฉcuritรฉ. Si par exemple les valeurs soumises ont une valeur active JavaScript ou code d'injection SQL, la bibliothรจque de validation supprime le code nuisible et le rend inutile.
- Validez les champs de base de donnรฉes uniques โ supposons que vous disposiez d'un formulaire dans lequel les utilisateurs s'inscrivent en utilisant une adresse e-mail. Vous voudriez vous assurer que lโadresse e-mail est unique. La bibliothรจque vous permet de vรฉrifier facilement les donnรฉes soumises par rapport ร une table et un champ de base de donnรฉes. Cela permet de savoir que la valeur a dรฉjร รฉtรฉ prรฉlevรฉe.
Les rรจgles de validation sont dรฉfinies en utilisant le format suivant
$this->form_validation->set_rules('field','human readable field','rule',['custom message']);
ICI,
- 'field' spรฉcifie le nom du champ du formulaire ร valider par la bibliothรจque
- ยซ champ lisible par l'homme ยป spรฉcifie le format lisible par l'homme du champ en cours de validation. Ceci est affichรฉ ร l'utilisateur lorsqu'une erreur se produit.
- 'rule' spรฉcifie la rรจgle de validation ร appliquer, telle que obligatoire, numรฉrique, vรฉrifier si la longueur minimale estโฆ etc.
- ['custom message'] est facultatif et peut รชtre utilisรฉ pour dรฉfinir un message de validation personnalisรฉ qui doit รชtre affichรฉ lorsque la rรจgle de validation รฉchoue.
Voici un formulaire ร soumettre. CodeExemple Igniter pour la validation du nom du contact
$this->form_validation->set_rules('contact_number', 'Contact Number', 'required');
ICI,
- Le code ci-dessus vรฉrifie si le champ contact_number a รฉtรฉ renseignรฉ. S'il n'est pas dรฉfini, renvoie une erreur indiquant que le champ Numรฉro de contact est requis.
Pour exรฉcuter la validation par rapport aux rรจgles dรฉfinies, nous utilisons la fonction suivante de la bibliothรจque de validation
$this->form_validation->run()
Si le code ci-dessus renvoie false, cela signifie qu'une ou plusieurs rรจgles dรฉfinies ont รฉchouรฉ. Si le rรฉsultat est vrai, cela signifie que les rรจgles de validation ont toutes รฉtรฉ respectรฉes et que vous pouvez poursuivre l'action.
Examinons d'autres exemples de rรจgles de validation. Supposons que vous souhaitiez valider certains champs indiquant le nom, le numรฉro et l'adresse e-mail du contact, vous pouvez utiliser le code suivant pour y parvenir.
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
ICI,
- Dans la validation d'email ci-dessus dans CodeDans l'exemple Igniter, nous fournissons un tableau de champs avec des rรจgles pour la fonction `set_rules` de la bibliothรจque. Cela simplifie la validation de certains champs.
Validation unique
Si nous voulons valider le numรฉro de contact pour nous assurer que nous n'enregistrons pas deux fois le mรชme numรฉro, nous pouvons utiliser la rรจgle suivante pour ce faire.
$this->form_validation->set_rules('contact_number', 'Contact Number','required|is_unique[contacts.contact_number]');
ICI,
- | est utilisรฉ pour regrouper plusieurs rรจgles ensemble
- is_unique[contacts.contact_number] vรฉrifie si la valeur de contact_number est unique par rapport aux valeurs du champ contact_number dans la table de base de donnรฉes contacts.
Affichage des messages d'erreur de validation de formulaire
Si une erreur survient lors du traitement du formulaire, vous pouvez utiliser le code suivant pour afficher les erreurs de validation survenues
<?php echo validation_errors(); ?>
ICI,
- La fonction ci-dessus renvoie toutes les erreurs survenues.
Remplir les donnรฉes du formulaire soumis : formulaires collants
Certains formulaires comportent de nombreux champs et si une erreur s'est produite, vous devez vous assurer que les donnรฉes correctement ajoutรฉes sont conservรฉes. La bibliothรจque de validation dispose de mรฉcanismes pour y parvenir. Nous faisons cela en utilisant le code suivant.
<?php echo set_value('field_name'); ?>
ICI,
- Le code ci-dessus affiche l'entrรฉe que l'utilisateur a saisie.
Pour obtenir un guide de rรฉfรฉrence complet sur les mรฉthodes disponibles dans la bibliothรจque de validation, vous pouvez vous rรฉfรฉrer ร la documentation de l'API dans le guide utilisateur officiel. Codeallumeur
https://codeigniter.com/userguide3/libraries/form_validation.html
CodeExemple de validation de formulaire Igniter
Tout au long de cette sรฉrie de didacticiels, nous avons ajoutรฉ davantage de code ร notre projet de didacticiel qui est une application de gestion de contacts. Dans cette section, nous allons charger la bibliothรจque de validation et voir comment nous pouvons la mettre en pratique ร l'aide d'un exemple d'application rรฉel.
Modifiez le code des routes comme suit pour inclure la mรฉthode store
$route['default_controller'] = 'welcome'; $route['contacts'] = 'contacts'; $route['create'] = 'contacts/create'; $route['store'] = 'contacts/store'; $route['edit/:id'] = 'contacts/edit'; $route['update/:id'] = 'contacts/update'; $route['delete/:id'] = 'contacts/delete'; $routes['users'] = 'welcome/users';
Chargeons maintenant la bibliothรจque de validation de formulaire dans le contrรดleur Contacts et dรฉfinissons quelques rรจgles de validation.
Modifiez le code comme indiquรฉ dans la validation du formulaire ci-dessous. CodeExemple d'allumeur :
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Contacts extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->helper('url', 'form');
$this->load->library('form_validation');
}
public function index() {
$this->load->view('header');
$this->load->view('contacts/index');
$this->load->view('footer');
}
public function create() {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
}
public function store() {
$rules = array(
array(
'field' => 'contact_name',
'label' => 'Contact Name',
'rules' => 'required'
),
array(
'field' => 'contact_number',
'label' => 'Contact Number',
'rules' => 'required',
'errors' => array(
'required' => 'You must provide a %s.',
),
),
array(
'field' => 'email_address',
'label' => 'Email Address',
'rules' => 'required'
)
);
$this->form_validation->set_rules($rules);
if ($this->form_validation->run() == FALSE) {
$this->load->view('header');
$this->load->view('contacts/create');
$this->load->view('footer');
} else {
redirect(base_url('contacts'));
}
}
public function edit($id) {
$this->load->view('header');
$this->load->view('contacts/edit');
$this->load->view('footer');
}
public function update($id) {
$this->load->view('header');
$this->load->view('contacts/update');
$this->load->view('footer');
}
public function delete($id) {
$this->load->view('header');
$this->load->view('contacts/delete');
$this->load->view('footer');
}
}
ICI,
- $rules = array(โฆ) sets dรฉfinit les rรจgles de validation
- $this->form_validation->set_rules($rules); dรฉfinit les rรจgles de validation
- if ($this->form_validation->run() == FALSE) {โฆ} exรฉcute les rรจgles de validation et si elles รฉchouent, le formulaire est rรฉaffichรฉ avec des erreurs de validation. Si la validation rรฉussit, nous redirigeons simplement vers la page de la liste des contacts. Dans des circonstances normales, nous รฉcrivions les donnรฉes dans la base de donnรฉes. Nous le ferons dans les prochains tutoriels lorsque nous examinerons bases de donnรฉes.
Modifiez la vue de crรฉation dans le code application/contacts/create.php comme indiquรฉ dans la validation du formulaire ci-dessous CodeExemple d'allumeur :
<div class="column">
<h2 class="title">Create Contact</h2>
<div class="notification is-danger">
<?php echo validation_errors(); ?>
</div>
<form action="<?= base_url('contacts/store') ?>" method="POST">
<div class="field">
<label class="label">Contact Name</label>
<div class="control">
<input id="contact_name" name="contact_name" class="input" type="text" value="<?php echo set_value('contact_name'); ?>" placeholder="Type the contact name">
</div>
</div>
<div class="field">
<label class="label">Contact Number</label>
<div class="control">
<input id="contact_number" name="contact_number" class="input" type="text" value="<?php echo set_value('contact_number'); ?>" placeholder="Type the contact number">
</div>
</div>
<div class="field">
<label class="label">Email Address</label>
<div class="control">
<input id="email_address" name="email_address" class="input" type="email" value="<?php echo set_value('email_address'); ?>" placeholder="Type the email address">
</div>
</div>
<div class="field is-grouped">
<div class="control">
<button class="button is-link">Save Contact</button>
</div>
</div>
</form>
</div>
ICI,
- nous affichons les erreurs qui surviennent le cas รฉchรฉant pendant le processus de validation
- dรฉfinit la valeur qui a รฉtรฉ prรฉcรฉdemment dรฉfinie, le cas รฉchรฉant
Vous devez charger les รฉlรฉments suivants URL Ouvrez votre navigateur web. Cliquez ensuite sur ยซ Crรฉer un contact ยป sans saisir aucune information.
Rรฉsumรฉ
- Les formulaires permettent aux utilisateurs d'interagir avec l'application et de soumettre des donnรฉes.
- Le HTML est gรฉnial, il est facile ร comprendre et ร รฉcrire, mais CodeIgniter simplifie encore les choses. CodeIgniter possรจde des fonctions intรฉgrรฉes pour crรฉer des formulaires HTML.
- La validation joue un rรดle trรจs critique lors du traitement des donnรฉes des formulaires.
- Dans ce tutoriel, nous avons examinรฉ les principales stratรฉgies de validation, ainsi que leurs avantages et inconvรฉnients. Nous avons รฉgalement appris ร dรฉfinir des rรจgles de validation et ร configurer les messages d'erreur. CodeBibliothรจque de validation intรฉgrรฉe d'Igniter. Nous avons conclu cette leรงon par la mise en pratique des connaissances acquises ร travers un exemple concret.


