FuelPHP - Programowanie formularzy
FuelPHP oferuje trzy klasy, Form Fieldset,, i Input,, do programowania formularzy.
Form class zapewnia opcję tworzenia wszystkich elementów formularzy HTML.
Fieldset class zapewnia opcję tworzenia elementu html za pomocą metod wyższego poziomu, integrując modele i walidację.
Input class zapewnia opcję analizowania danych przesłanych za pośrednictwem formularzy html, a także parametrów http, zmiennych serwera i agentów użytkownika.
Nauczmy się z tego rozdziału Form programming w FuelPHP.
Formularz
Jak wspomniano wcześniej, klasa Form udostępnia metody do tworzenia elementów formularza html, a ważne metody są następujące -
otwarty()
open()służy do tworzenia nowego formularza. Zapewnia następujące dwa parametry -
$attributes - atrybuty tagu formularza jako tablica lub po prostu adres URL akcji jako łańcuch.
$hidden - tablica nazw pól ukrytych i ich wartości.
echo Form::open('/employee/add');
echo Form::open(array('action' => '/employee/add', 'method' => 'post'));
blisko()
close() po prostu zamyka formularz.
echo Form::close();
Wejście()
input()tworzy element wejściowy html. Ma następujące trzy parametry,
$field - nazwa elementu wejściowego
$value - wartość elementu wejściowego
$attributes - atrybuty elementu wejściowego jako tablica
echo Form::input('name', 'jon', array('style' => 'border: 20px;'));
element etykiety
labeltworzy element etykiety html. Ma następujące trzy parametry,
$label - etykieta do pokazania
$id - powiązany identyfikator elementu formularza
$attributes - atrybuty elementu etykiety jako tablicy
echo Form::label('Employee Name', 'employee_name');
ukryty
hidden jest podobna do metody wprowadzania, z tą różnicą, że ustawia typ elementu wejściowego na ukryty.
hasło
password jest podobna do metody wprowadzania, z tą różnicą, że ustawia typ elementu wejściowego na hasło.
radio
radiojest podobna do metody input, z tą różnicą, że ustawia typ elementu input na radio. Ma następujące cztery parametry,
$field - nazwa elementu wejściowego
$value - wartość elementu wejściowego
$checked - czy pozycja jest zaznaczona czy nie (prawda / fałsz)
$attributes - atrybuty elementu wejściowego jako tablica
echo Form::label('Male', 'gender');
echo Form::radio('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::radio('gender', 'Female');
pole wyboru
checkboxjest podobna do metody wprowadzania, z tą różnicą, że ustawia typ elementu wejściowego na pole wyboru. Ma następujące cztery parametry,
$field - nazwa elementu wejściowego
$value - wartość elementu wejściowego
$checked - czy pozycja jest zaznaczona czy nie (prawda / fałsz)
$attributes - atrybuty elementu wejściowego jako tablica
echo Form::label('Male', 'gender');
echo Form::checkbox('gender', 'Male', true);
echo Form::label('Female', 'gender');
echo Form::checkbox('gender', 'Female');
plik
file jest podobny do metody input, z tą różnicą, że ustawia typ elementu wejściowego na plik.
textarea
textareatworzy element html textarea. Ma następujące trzy parametry,
$field - nazwa elementu textarea
$value - wartość elementu textarea
$attributes - atrybuty elementu textarea jako tablica
echo Form::textarea ('description', 'original data (value)', array ('rows' => 6,
'cols' => 8));
Wybierz
selecttworzy element wyboru HTML. Ma następujące cztery parametry -
$field - nazwa wybranego elementu
$values - wstępne wartości selekcji
$options- opcje jako tablica. Opcje można grupować za pomocą tablicy zagnieżdżonej
$attributes - atrybuty elementu wejściowego jako tablica
echo Form::select (
'country',
'none',
array (
'none' => 'None',
'asia' => array (
'in' > 'India',
'cn' => 'China'
),
'us' => 'United States'
)
);
Zatwierdź
submit jest podobna do metody input, z tą różnicą, że ustawia typ elementu wejściowego do przesłania.
przycisk
buttontworzy przycisk html. Ma następujące trzy parametry,
$field - nazwa elementu przycisku
$value - wartość elementu przycisku
$attributes - atrybuty elementu przycisku jako tablica
echo Form::button('emp_submit', 'Submit');
Resetowanie
reset jest podobna do metody input, z tą różnicą, że ustawia typ elementu wejściowego do zresetowania.
fieldset_open
fieldset_open tworzy zestaw pól html i elementy legendy. Ma następujące dwa parametry -
attributes - atrybuty elementu fieldset jako tablica
legend - nazwa legendy do utworzenia
// 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 tworzy znacznik zamykający zestawu pól HTML.
// returns </fieldset>
echo Form::fieldset_close();
Klasa wejściowa
Klasa Input udostępnia metody do odczytu wszystkich danych żądania wraz ze szczegółami formularza. Oto niektóre z ważnych metod -
uri
uri zwraca bieżący identyfikator URI żądania
// request: http://localhost:8080/employee/welcome
echo Input::uri(); // return /employee/welcome
metoda
method zwraca metodę HTTP użytą w żądaniu
echo Input::method() // "POST"
dostać
getumożliwia odczyt zmiennych $ _GET. Ma następujące dwa parametry,
$index - indeks tablicy $ _GET
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony.
echo Input::get('age', '20'); // returns $_GET['age']
Poczta
postumożliwia odczyt zmiennych $ _POST. Ma następujące dwa parametry,
$index - indeks tablicy $ _POST
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony
echo Input::get('age', '20'); // returns $_POST['age']
param
paramumożliwia pobranie elementu ze zmiennych $ _GET, $ _POST, $ _PUT lub $ _DELETE. Ma następujące dwa parametry,
$index - indeks tablicy
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony
Jeśli nie zostanie określony żaden parametr, zwróci wszystkie elementy.
echo Input::param('age', '20'); // returns $_POST['age']
plik
fileumożliwia odczyt zmiennych $ _FILE. Ma następujące dwa parametry,
$index - indeks tablicy $ _POST
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony
echo Input::file();
is_ajax
is_ajax zwraca wartość true, jeśli żądanie zostało wysłane za pośrednictwem technologii AJAX.
echo Input::is_ajax() // return false
protokół
protocol zwraca protokół HTTP użyty w żądaniu.
echo Input::protocol() // returns "HTTP"
ip
ip zwraca adres IP, za pośrednictwem którego wysyłane jest żądanie.
echo Input::ip() // returns "84.45.34.24" (Public IP Address)
real_ip
real_ip próbuje zwrócić rzeczywisty adres IP (jeśli klient znajduje się za proxy), przez który wysyłane jest żądanie.
echo Input::real_ip() // returns "10.76.12.1" (local private IP Address)
serwer
serverumożliwia odczyt zmiennych $ _SERVER. Ma następujące dwa parametry,
$index - indeks tablicy $ _POST
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony.
echo Input::server('HTTP_HOST'); // returns localhost:8080
strona odsyłająca
referrerzwraca stronę odsyłającą ze zmiennej $ _SERVER. Jest to skrótowa metoda uzyskiwania strony odsyłającej http bieżącego żądania.
agent użytkownika
user_agentzwraca agenta użytkownika ze zmiennej $ _SERVER. Jest to skrótowa metoda uzyskiwania agenta użytkownika http dla bieżącego żądania.
query_string
query_stringzwraca ciąg zapytania ze zmiennej $ _SERVER. Jest to metoda skrótowa służąca do pobierania ciągu zapytania bieżącego żądania.
nagłówki
headerszwraca określone lub wszystkie nagłówki. Ma następujące dwa parametry -
$index - nazwa nagłówków HTTP
$default - wartość domyślna, jeśli indeks nie zostanie znaleziony.
echo Input::headers('Content-Type'); // returns "text/html"
rozbudowa
extension zwraca rozszerzenie URI bieżącego żądania.
// Example URL: http://localhost/test/
echo Input::extension(); // NULL
// Example URL: http://localhost/test.html
echo Input::extension(); // 'html'
Przykład roboczy
Stwórzmy prosty formularz, aby dodać nowego pracownika za pomocą klasy Form and Input.
Utwórz formularz
Utwórz nową akcję, get_add w kontrolerze pracowniczym w następujący sposób.
public function get_add() {
return Response::forge(View::forge('employee/add'));
}
Teraz dodaj widok akcji, paliwo / aplikacja / widoki / pracownik / add.php w następujący sposób.
<!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>
Tutaj użyliśmy bootstrapzaprojektować formularz. FuelPHP zapewnia pełne wsparcie dla komponentów bootstrap. Teraz, żądając strony, http: // localhost: 8080 / worker / add wyświetli następujący formularz.
Formularz procesu
Utwórz nową akcję, post_add do przetworzenia formularza i dodaj dane pracownika wprowadzone przez użytkownika do bazy danych w kontrolerze pracowników w następujący sposób.
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');
}
Tutaj zostaliśmy przekierowani na stronę z listą pracowników, gdy wprowadzone przez użytkownika dane zostaną zapisane w bazie danych. Następnie utworzymy stronę z listą pracowników.
Lista pracownika
Utwórz nową akcję, action_list, aby wyświetlić pracownika w bazie danych w następujący sposób.
public function action_list() {
$data = array();
$data['emps'] = model_employee::find('all');
return Response::forge(view::forge('employee/list', $data));
}
Utwórz nowy widok, fuel/app/views/employee/list dla powyższego działania w następujący sposób.
<ul>
<?php
foreach($emps as $emp) {
?>
<li><?php echo $emp['name']; ?></li>
<?php
}
?>
</ul>
Sprawdź formularz
Teraz poproś o adres URL, http://localhost:8080/employee/addwprowadź dane pracownika, jak pokazano na poniższym zrzucie ekranu, i prześlij formularz.
Następnie pokazuje wszystkich pracowników (w tym nowo dodanych) dostępnych w bazie w następujący sposób -