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: