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 -