FuelPHP - Programmazione moduli

FuelPHP offre tre classi, Form Fieldset,, e Input,, per eseguire la programmazione del modulo.

  • Form class fornisce un'opzione per creare tutti gli elementi dei moduli HTML.

  • Fieldset class fornisce un'opzione per creare elementi html attraverso metodi di livello superiore, integrando i modelli e la convalida.

  • Input class fornisce un'opzione per analizzare i dati inviati tramite moduli html nonché parametri http, variabili del server e agenti utente.

In questo capitolo impariamo Form programming in FuelPHP.

Modulo

Come discusso in precedenza, la classe Form fornisce metodi per creare elementi di form html e i metodi importanti sono i seguenti:

Aperto()

open()viene utilizzato per creare un nuovo modulo. Fornisce i seguenti due parametri:

  • $attributes - attributi del tag del modulo come array o solo l'URL dell'azione come stringa.

  • $hidden - matrice di nomi di campi nascosti e relativi valori.

echo Form::open('/employee/add'); 
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));

vicino()

close() chiude semplicemente il modulo.

echo Form::close();

ingresso()

input()crea un elemento di input html. Ha i seguenti tre parametri,

  • $field - nome dell'elemento di input

  • $value - valore dell'elemento di input

  • $attributes - attributi dell'elemento di input come array

echo Form::input('name', 'jon', array('style' => 'border: 20px;'));

elemento etichetta

labelcrea un elemento etichetta html. Ha i seguenti tre parametri,

  • $label - etichetta da mostrare

  • $id - ID elemento modulo associato

  • $attributes - attributi dell'elemento etichetta come array

echo Form::label('Employee Name', 'employee_name');

nascosto

hidden è simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input su nascosto.

parola d'ordine

password è simile al metodo di input, tranne che imposta il tipo di elemento di input su password.

Radio

radioè simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input su radio. Ha i seguenti quattro parametri,

  • $field - nome dell'elemento di input

  • $value - valore dell'elemento di input

  • $checked - se l'elemento è controllato o meno (vero / falso)

  • $attributes - attributi dell'elemento di input come array

echo Form::label('Male', 'gender'); 
echo Form::radio('gender', 'Male', true); 
echo Form::label('Female', 'gender'); 
echo Form::radio('gender', 'Female');

casella di controllo

checkboxè simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input sulla casella di controllo. Ha i seguenti quattro parametri,

  • $field - nome dell'elemento di input

  • $value - valore dell'elemento di input

  • $checked - se l'elemento è controllato o meno (vero / falso)

  • $attributes - attributi dell'elemento di input come array

echo Form::label('Male', 'gender'); 
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender'); 
echo Form::checkbox('gender', 'Female');

file

file è simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input su file.

textarea

textareacrea elemento textarea html. Ha i seguenti tre parametri,

  • $field - nome dell'elemento textarea

  • $value - valore dell'elemento textarea

  • $attributes - attributi dell'elemento textarea come array

echo Form::textarea ('description', 'original data (value)', array ('rows' => 6, 
      'cols' => 8));

Selezionare

selectcrea un elemento di selezione HTML. Ha i seguenti quattro parametri:

  • $field - nome dell'elemento selezionato

  • $values - valori di selezione iniziale

  • $options- opzioni come array. Le opzioni possono essere raggruppate utilizzando array annidati

  • $attributes - attributi dell'elemento di input come array

echo Form::select ( 
   'country',  
   'none',  
   array ( 
      'none'  => 'None', 
      'asia'  => array ( 
         'in' > 'India', 
         'cn' => 'China' 
      ), 
      
      'us' => 'United States' 
   ) 
);

Invia

submit è simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input da inviare.

pulsante

buttoncrea un elemento pulsante html. Ha i seguenti tre parametri,

  • $field - nome dell'elemento pulsante

  • $value - valore dell'elemento pulsante

  • $attributes - attributi dell'elemento button come array

echo Form::button('emp_submit', 'Submit');

Ripristina

reset è simile al metodo di input, tranne per il fatto che imposta il tipo di elemento di input da reimpostare.

fieldset_open

fieldset_open crea una serie di campi HTML e elementi di legenda. Ha i seguenti due parametri:

  • attributes - attributi dell'elemento fieldset come array

  • legend - nome della legenda da creare

// 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 crea il tag di chiusura del set di campi HTML.

// returns </fieldset> 
echo Form::fieldset_close();

Classe di input

La classe di input fornisce metodi per leggere tutti i dati della richiesta insieme ai dettagli del modulo. Alcuni dei metodi importanti sono i seguenti:

uri

uri restituisce l'URI corrente della richiesta

// request: http://localhost:8080/employee/welcome  
echo Input::uri(); // return /employee/welcome

metodo

method restituisce il metodo HTTP utilizzato nella richiesta

echo Input::method() // "POST"

ottenere

getconsente di leggere le variabili $ _GET. Ha i seguenti due parametri,

  • $index - indice dell'array $ _GET

  • $default - valore predefinito, se l'indice non viene trovato.

echo Input::get('age', '20'); // returns $_GET['age']

inviare

postconsente di leggere le variabili $ _POST. Ha i seguenti due parametri,

  • $index - indice dell'array $ _POST

  • $default - valore predefinito, se l'indice non viene trovato

echo Input::get('age', '20'); // returns $_POST['age']

param

paramconsente di recuperare l'elemento dalle variabili $ _GET, $ _POST, $ _PUT o $ _DELETE. Ha i seguenti due parametri,

  • $index - indice dell'array

  • $default - valore predefinito, se l'indice non viene trovato

Se non viene specificato alcun parametro, restituirà tutti gli elementi.

echo Input::param('age', '20'); // returns $_POST['age']

file

filepermette di leggere le variabili $ _FILE. Ha i seguenti due parametri,

  • $index - indice dell'array $ _POST

  • $default - valore predefinito, se l'indice non viene trovato

echo Input::file();

is_ajax

is_ajax restituisce true, se la richiesta viene effettuata tramite AJAX.

echo Input::is_ajax() // return false

protocollo

protocol restituisce il protocollo HTTP utilizzato nella richiesta.

echo Input::protocol() // returns "HTTP"

ip

ip restituisce l'indirizzo IP tramite il quale viene effettuata la richiesta.

echo Input::ip() // returns "84.45.34.24" (Public IP Address)

real_ip

real_ip cerca di restituire il vero indirizzo IP (se il client è dietro proxy) attraverso il quale viene effettuata la richiesta.

echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)

server

serverpermette di leggere le variabili $ _SERVER. Ha i seguenti due parametri,

  • $index - indice dell'array $ _POST

  • $default - valore predefinito, se l'indice non viene trovato.

echo Input::server('HTTP_HOST'); // returns localhost:8080

referrer

referrerrestituisce il referrer dalla variabile $ _SERVER. È un metodo di scelta rapida per ottenere il referrer http della richiesta corrente.

user_agent

user_agentrestituisce il programma utente dalla variabile $ _SERVER. È un metodo di scelta rapida per ottenere l'agente utente http della richiesta corrente.

stringa della domanda

query_stringrestituisce la stringa di query dalla variabile $ _SERVER. È un metodo di scelta rapida per ottenere la stringa di query della richiesta corrente.

intestazioni

headersrestituisce le intestazioni specifiche o tutte. Ha i seguenti due parametri:

  • $index - nome delle intestazioni HTTP

  • $default - valore predefinito, se l'indice non viene trovato.

echo Input::headers('Content-Type'); // returns "text/html"

estensione

extension restituisce l'estensione URI della richiesta corrente.

// Example URL: http://localhost/test/ 
echo Input::extension();  // NULL  

// Example URL: http://localhost/test.html 
echo Input::extension();  // 'html'

Esempio di lavoro

Creiamo un semplice modulo per aggiungere un nuovo dipendente utilizzando il modulo e la classe di input.

Crea modulo

Crea nuova azione, get_add nel controller dei dipendenti come segue.

public function get_add() { 
   return Response::forge(View::forge('employee/add')); 
}

Ora, aggiungi la vista per l'azione, carburante / app / visualizzazioni / dipendente / add.php come segue.

<!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>

Qui abbiamo usato bootstrapper progettare il modulo. FuelPHP fornisce il supporto completo per i componenti bootstrap. Ora, richiedendo la pagina, http: // localhost: 8080 / dipendente / add mostrerà il seguente modulo.

Modulo di processo

Crea nuova azione, post_add per elaborare il modulo e aggiungere i dati del dipendente immessi dall'utente nel database nel controller dei dipendenti come segue.

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'); 
}

Qui, siamo stati reindirizzati alla pagina dell'elenco dei dipendenti, una volta che i dati inseriti dall'utente vengono salvati nel database. Successivamente, creeremo la pagina dell'elenco dei dipendenti.

Elenco dipendenti

Crea una nuova azione, action_list per elencare il dipendente nel database come segue.

public function action_list() { 
   $data = array(); 
   $data['emps'] = model_employee::find('all');
   return Response::forge(view::forge('employee/list', $data)); 
}

Crea nuova vista, fuel/app/views/employee/list per l'azione di cui sopra come segue.

<ul> 
   <?php 
      foreach($emps as $emp) {  
   ?> 
   <li><?php echo $emp['name']; ?></li> 
   <?php 
   } 
   ?> 
</ul>

Controlla il modulo

Ora, richiedi l'URL, http://localhost:8080/employee/add, inserisci alcuni dati dei dipendenti come mostrato nella seguente schermata e invia il modulo.

Quindi, mostra tutti i dipendenti (incluso uno appena aggiunto) disponibili nel database come segue: