FuelPHP - Programação de formulário

FuelPHP oferece três classes, Form Fieldset,, e Input,, para realizar a programação do formulário.

  • Form classe fornece uma opção para criar todos os elementos de formulários HTML.

  • Fieldset classe fornece uma opção para criar elemento html por meio de métodos de nível superior, integrando os modelos e validação.

  • Input A classe oferece uma opção para analisar os dados enviados por meio de formulários html, bem como parâmetros http, variáveis ​​de servidor e agentes de usuário.

Neste capítulo, vamos aprender Form programming no FuelPHP.

Formato

Conforme discutido anteriormente, a classe Form fornece métodos para criar elementos de formulário html e os métodos importantes são os seguintes -

abrir()

open()é usado para criar um novo formulário. Ele fornece os dois parâmetros a seguir -

  • $attributes - atributos de tag de formulário como array ou apenas a URL de ação como string.

  • $hidden - array de nome de campo oculto e seus valores.

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

Fechar()

close() simplesmente fecha o formulário.

echo Form::close();

entrada()

input()cria o elemento de entrada html. Ele tem os três parâmetros a seguir,

  • $field - nome do elemento de entrada

  • $value - valor do elemento de entrada

  • $attributes - atributos do elemento de entrada como matriz

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

elemento de etiqueta

labelcria um elemento de rótulo html. Ele tem os três parâmetros a seguir,

  • $label - etiqueta para mostrar

  • $id - ID de elemento de formulário associado

  • $attributes - atributos do elemento label como array

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

escondido

hidden é semelhante ao método de entrada, exceto que define o tipo do elemento de entrada como oculto.

senha

password é semelhante ao método de entrada, exceto que define o tipo do elemento de entrada como senha.

rádio

radioé semelhante ao método de entrada, exceto que define o tipo do elemento de entrada para rádio. Ele tem os quatro parâmetros a seguir,

  • $field - nome do elemento de entrada

  • $value - valor do elemento de entrada

  • $checked - se o item é verificado ou não (verdadeiro / falso)

  • $attributes - atributos do elemento de entrada como matriz

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

caixa de seleção

checkboxé semelhante ao método de entrada, exceto que define o tipo do elemento de entrada como caixa de seleção. Ele tem os quatro parâmetros a seguir,

  • $field - nome do elemento de entrada

  • $value - valor do elemento de entrada

  • $checked - se o item é verificado ou não (verdadeiro / falso)

  • $attributes - atributos do elemento de entrada como matriz

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

Arquivo

file é semelhante ao método de entrada, exceto que define o tipo do elemento de entrada para arquivo.

área de texto

textareacria o elemento textarea html. Ele tem os três parâmetros a seguir,

  • $field - nome do elemento textarea

  • $value - valor do elemento textarea

  • $attributes - atributos do elemento textarea como array

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

selecionar

selectcria um elemento de seleção HTML. Ele tem os seguintes quatro parâmetros -

  • $field - nome do elemento selecionado

  • $values - valores de seleção inicial

  • $options- opções como array. As opções podem ser agrupadas usando uma matriz aninhada

  • $attributes - atributos do elemento de entrada como matriz

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

enviar

submit é semelhante ao método de entrada, exceto que define o tipo do elemento de entrada a ser enviado.

botão

buttoncria um elemento de botão html. Ele tem os três parâmetros a seguir,

  • $field - nome do elemento do botão

  • $value - valor do elemento do botão

  • $attributes - atributos do elemento do botão como matriz

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

Redefinir

reset é semelhante ao método de entrada, exceto que define o tipo do elemento de entrada para redefinir.

fieldset_open

fieldset_open cria conjunto de campos html e elementos de legenda. Ele tem os seguintes dois parâmetros -

  • attributes - atributos do elemento fieldset como array

  • legend - nome da legenda a ser criada

// 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 cria a tag de fechamento do conjunto de campos HTML.

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

Classe de entrada

A classe de entrada fornece métodos para ler todos os dados da solicitação junto com os detalhes do formulário. Alguns dos métodos importantes são os seguintes -

uri

uri retorna o URI atual da solicitação

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

método

method retorna o método HTTP usado na solicitação

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

pegue

getpermite ler variáveis ​​$ _GET. Ele tem os dois parâmetros a seguir,

  • $index - índice da matriz $ _GET

  • $default - valor padrão, se o índice não for encontrado.

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

postar

postpermite ler variáveis ​​$ _POST. Ele tem os dois parâmetros a seguir,

  • $index - índice da matriz $ _POST

  • $default - valor padrão, se o índice não for encontrado

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

param

parampermite buscar o item das variáveis ​​$ _GET, $ _POST, $ _PUT ou $ _DELETE. Ele tem os dois parâmetros a seguir,

  • $index - índice da matriz

  • $default - valor padrão, se o índice não for encontrado

Se nenhum parâmetro for especificado, ele retornará todos os itens.

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

Arquivo

filepermite ler variáveis ​​$ _FILE. Ele tem os dois parâmetros a seguir,

  • $index - índice da matriz $ _POST

  • $default - valor padrão, se o índice não for encontrado

echo Input::file();

is_ajax

is_ajax retorna verdadeiro, se a solicitação for feita por meio de AJAX.

echo Input::is_ajax() // return false

protocolo

protocol retorna o protocolo HTTP usado na solicitação.

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

ip

ip retorna o endereço IP por meio do qual a solicitação é feita.

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

real_ip

real_ip tenta retornar o endereço IP real (se o cliente estiver atrás de proxy) por meio do qual a solicitação é feita.

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

servidor

serverpermite ler variáveis ​​$ _SERVER. Ele tem os dois parâmetros a seguir,

  • $index - índice da matriz $ _POST

  • $default - valor padrão, se o índice não for encontrado.

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

referenciador

referrerretorna o referenciador da variável $ _SERVER. É um método de atalho para obter o referenciador http da solicitação atual.

agente de usuário

user_agentretorna o agente do usuário da variável $ _SERVER. É um método de atalho para obter o agente do usuário http da solicitação atual.

query_string

query_stringretorna a string de consulta da variável $ _SERVER. É um método de atalho para obter a string de consulta da solicitação atual.

cabeçalhos

headersretornar o cabeçalho específico ou todos os cabeçalhos. Ele tem os seguintes dois parâmetros -

  • $index - nome dos cabeçalhos HTTP

  • $default - valor padrão, se o índice não for encontrado.

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

extensão

extension retorna a extensão URI da solicitação atual.

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

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

Exemplo de Trabalho

Vamos criar um formulário simples para adicionar novos funcionários usando as classes Form e Input.

Criar formulário

Crie uma nova ação, get_add no controlador de funcionários da seguinte forma.

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

Agora, adicione a visualização para a ação, fuel / app / views / employee / add.php como 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>

Aqui, nós usamos bootstrappara projetar o formulário. FuelPHP fornece suporte completo para componentes de bootstrap. Agora, solicitando a página, http: // localhost: 8080 / employee / add mostrará o seguinte formulário.

Formulário de Processo

Crie uma nova ação, post_add para processar o formulário e adicionar os dados do funcionário inseridos pelo usuário no banco de dados no controlador de funcionário da seguinte maneira.

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

Aqui, fomos redirecionados para a página de lista de funcionários, uma vez que os dados inseridos do usuário são salvos no banco de dados. A seguir, criaremos a página da lista de funcionários.

Funcionário da lista

Crie uma nova ação, action_list para listar o funcionário no banco de dados como segue.

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

Crie uma nova vista, fuel/app/views/employee/list para a ação acima da seguinte maneira.

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

Verifique o Formulário

Agora, solicite o URL, http://localhost:8080/employee/add, insira alguns dados do funcionário conforme mostrado na captura de tela a seguir e envie o formulário.

Em seguida, mostra todos os funcionários (incluindo um recém-adicionado) disponíveis no banco de dados da seguinte forma -