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 -