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 -