FuelPHP - Programmation de formulaires
FuelPHP propose trois classes, Form Fieldset,, et Input,, pour effectuer la programmation de formulaire.
Form class fournit une option pour créer tous les éléments de formulaires HTML.
Fieldset classe fournit une option pour créer un élément html via des méthodes de niveau supérieur, intégrant les modèles et la validation.
Input class fournit une option pour analyser les données soumises via des formulaires html ainsi que des paramètres http, des variables de serveur et des agents utilisateurs.
Dans ce chapitre, apprenons Form programming dans FuelPHP.
Forme
Comme indiqué précédemment, la classe Form fournit des méthodes pour créer des éléments de formulaire html et les méthodes importantes sont les suivantes:
ouvert()
open()est utilisé pour créer un nouveau formulaire. Il fournit les deux paramètres suivants -
$attributes - les attributs de la balise form comme tableau ou simplement l'URL d'action sous forme de chaîne.
$hidden - tableau de nom de champ caché et leurs valeurs.
echo Form::open('/employee/add');
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));
Fermer()
close() ferme simplement le formulaire.
echo Form::close();
contribution()
input()crée un élément d'entrée HTML. Il a les trois paramètres suivants,
$field - nom de l'élément d'entrée
$value - valeur de l'élément d'entrée
$attributes - attributs de l'élément d'entrée en tant que tableau
echo Form::input('name', 'jon', array('style' => 'border: 20px;'));
élément d'étiquette
labelcrée un élément d'étiquette html. Il a les trois paramètres suivants,
$label - étiquette à montrer
$id - identifiant d'élément de formulaire associé
$attributes - attributs de l'élément label en tant que tableau
echo Form::label('Employee Name', 'employee_name');
caché
hidden est similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée sur masqué.
mot de passe
password est similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée sur mot de passe.
radio
radioest similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée sur radio. Il a les quatre paramètres suivants,
$field - nom de l'élément d'entrée
$value - valeur de l'élément d'entrée
$checked - si l'élément est coché ou non (vrai / faux)
$attributes - attributs de l'élément d'entrée en tant que tableau
echo Form::label('Male', 'gender');
echo Form::radio('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::radio('gender', 'Female');
case à cocher
checkboxest similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée sur la case à cocher. Il a les quatre paramètres suivants,
$field - nom de l'élément d'entrée
$value - valeur de l'élément d'entrée
$checked - si l'élément est coché ou non (vrai / faux)
$attributes - attributs de l'élément d'entrée en tant que tableau
echo Form::label('Male', 'gender');
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::checkbox('gender', 'Female');
fichier
file est similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée sur fichier.
textarea
textareacrée un élément textarea html. Il a les trois paramètres suivants,
$field - nom de l'élément textarea
$value - valeur de l'élément textarea
$attributes - attributs de l'élément textarea en tant que tableau
echo Form::textarea ('description', 'original data (value)', array ('rows' => 6,
'cols' => 8));
sélectionner
selectcrée un élément de sélection HTML. Il a les quatre paramètres suivants -
$field - nom de l'élément sélectionné
$values - valeurs de sélection initiales
$options- options comme tableau. Les options peuvent être regroupées à l'aide d'un tableau imbriqué
$attributes - attributs de l'élément d'entrée en tant que tableau
echo Form::select (
'country',
'none',
array (
'none' => 'None',
'asia' => array (
'in' > 'India',
'cn' => 'China'
),
'us' => 'United States'
)
);
soumettre
submit est similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée à soumettre.
bouton
buttoncrée un élément de bouton html. Il a les trois paramètres suivants,
$field - nom de l'élément bouton
$value - valeur de l'élément bouton
$attributes - attributs de l'élément bouton en tant que tableau
echo Form::button('emp_submit', 'Submit');
réinitialiser
reset est similaire à la méthode d'entrée, sauf qu'elle définit le type de l'élément d'entrée à réinitialiser.
fieldset_open
fieldset_open crée un ensemble de champs html et des éléments de légende. Il a les deux paramètres suivants -
attributes - attributs de l'élément fieldset en tant que tableau
legend - nom de la légende à créer
// returns <fieldset class = "example-class" id = "example-id">
<legend>
Custom Legend
</legend>
echo Form::fieldset_open (array (
'class' => 'example-class',
'id' => 'exampleid',
'legend' => 'Custom Legend'
));
fieldset_close
fieldset_close crée la balise de fermeture du jeu de champs HTML.
// returns </fieldset>
echo Form::fieldset_close();
Classe d'entrée
La classe Input fournit des méthodes pour lire toutes les données de demande ainsi que les détails du formulaire. Certaines des méthodes importantes sont les suivantes -
uri
uri renvoie l'URI actuel de la requête
// request: http://localhost:8080/employee/welcome
echo Input::uri(); // return /employee/welcome
méthode
method renvoie la méthode HTTP utilisée dans la requête
echo Input::method() // "POST"
avoir
getpermet de lire les variables $ _GET. Il a les deux paramètres suivants,
$index - index du tableau $ _GET
$default - valeur par défaut, si l'index n'est pas trouvé.
echo Input::get('age', '20'); // returns $_GET['age']
Publier
postpermet de lire les variables $ _POST. Il a les deux paramètres suivants,
$index - index du tableau $ _POST
$default - valeur par défaut, si l'index n'est pas trouvé
echo Input::get('age', '20'); // returns $_POST['age']
param
parampermet de récupérer l'élément à partir des variables $ _GET, $ _POST, $ _PUT ou $ _DELETE. Il a les deux paramètres suivants,
$index - index du tableau
$default - valeur par défaut, si l'index n'est pas trouvé
Si aucun paramètre n'est spécifié, tous les éléments seront renvoyés.
echo Input::param('age', '20'); // returns $_POST['age']
fichier
filepermet de lire les variables $ _FILE. Il a les deux paramètres suivants,
$index - index du tableau $ _POST
$default - valeur par défaut, si l'index n'est pas trouvé
echo Input::file();
is_ajax
is_ajax renvoie true, si la demande est effectuée via AJAX.
echo Input::is_ajax() // return false
protocole
protocol renvoie le protocole HTTP utilisé dans la requête.
echo Input::protocol() // returns "HTTP"
ip
ip renvoie l'adresse IP via laquelle la demande est effectuée.
echo Input::ip() // returns "84.45.34.24" (Public IP Address)
real_ip
real_ip essaie de renvoyer la véritable adresse IP (si le client est derrière le proxy) via laquelle la demande est effectuée.
echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)
serveur
serverpermet de lire les variables $ _SERVER. Il a les deux paramètres suivants,
$index - index du tableau $ _POST
$default - valeur par défaut, si l'index n'est pas trouvé.
echo Input::server('HTTP_HOST'); // returns localhost:8080
référent
referrerrenvoie le référent de la variable $ _SERVER. Il s'agit d'une méthode de raccourci pour obtenir le référent http de la requête en cours.
agent utilisateur
user_agentrenvoie l'agent utilisateur à partir de la variable $ _SERVER. Il s'agit d'une méthode de raccourci pour obtenir l'agent utilisateur http de la requête actuelle.
chaîne de requête
query_stringrenvoie la chaîne de requête de la variable $ _SERVER. Il s'agit d'une méthode de raccourci pour obtenir la chaîne de requête de la requête actuelle.
en-têtes
headersrenvoie les en-têtes spécifiques ou tous. Il a les deux paramètres suivants -
$index - nom des en-têtes HTTP
$default - valeur par défaut, si l'index n'est pas trouvé.
echo Input::headers('Content-Type'); // returns "text/html"
extension
extension renvoie l'extension URI de la requête actuelle.
// Example URL: http://localhost/test/
echo Input::extension(); // NULL
// Example URL: http://localhost/test.html
echo Input::extension(); // 'html'
Exemple de travail
Créons un formulaire simple pour ajouter un nouvel employé à l'aide de la classe Form et Input.
Créer un formulaire
Créer une nouvelle action, get_add dans le contrôleur des employés comme suit.
public function get_add() {
return Response::forge(View::forge('employee/add'));
}
Maintenant, ajoutez une vue pour l'action, fuel / app / views / employee / add.php comme suit.
<!DOCTYPE html>
<html lang = "en">
<head>
<title>Employee :: add page</title>
<meta charset = "utf-8">
<meta name = "viewport" content = "width = device-width, initial-scale = 1">
<?php echo Asset::css('bootstrap.css'); ?>
</head>
<body>
<div class = "container">
<?php
echo Form::open(array('action' => 'employee/add', 'method' => 'post'));
?>
<div class = "form-group">
<?php
echo Form::label('Employee name:', 'name');
echo Form::input('name', '', array('class' => 'form-control'));
?>
</div>
<div class = "form-group">
<?php
echo Form::label('Employee age:', 'age');
echo Form::input('age', '', array('class' => 'form-control'));
?>
</div>
<?php echo Form::button('frmbutton', 'Submit', array(
'class' => 'btn btn-default'));
?>
<?php
echo Form::close();
?>
</div>
</body>
</html>
Ici, nous avons utilisé bootstrappour concevoir le formulaire. FuelPHP fournit une prise en charge complète des composants bootstrap. Maintenant, en demandant la page, http: // localhost: 8080 / employee / add affichera le formulaire suivant.
Formulaire de processus
Créez une nouvelle action, post_add pour traiter le formulaire et ajoutez les données d'employé saisies par l'utilisateur dans la base de données du contrôleur d'employés comme suit.
public function post_add() {
$name = Input::post('name');
$age = Input::post('age');
$model = new model_employee();
$model->name = $name;
$model->age = $age;
$model->save();
Response::redirect('employee/list');
}
Ici, nous avons été redirigés vers la page de la liste des employés, une fois que les données saisies par l'utilisateur sont enregistrées dans la base de données. Ensuite, nous allons créer la page de la liste des employés.
Liste des employés
Créez une nouvelle action, action_list pour répertorier l'employé dans la base de données comme suit.
public function action_list() {
$data = array();
$data['emps'] = model_employee::find('all');
return Response::forge(view::forge('employee/list', $data));
}
Créer une nouvelle vue, fuel/app/views/employee/list pour l'action ci-dessus comme suit.
<ul>
<?php
foreach($emps as $emp) {
?>
<li><?php echo $emp['name']; ?></li>
<?php
}
?>
</ul>
Vérifiez le formulaire
Maintenant, demandez l'URL, http://localhost:8080/employee/add, entrez certaines données d'employés comme indiqué dans la capture d'écran suivante et soumettez le formulaire.
Ensuite, il montre tous les employés (y compris un nouvellement ajouté) disponibles dans la base de données comme suit -