FuelPHP - Programación de formularios

FuelPHP ofrece tres clases, Form Fieldset,, y Input,, para realizar la programación de formularios.

  • Form La clase proporciona una opción para crear todos los elementos de formularios HTML.

  • Fieldset class proporciona una opción para crear elementos html a través de métodos de nivel superior, integrando los modelos y la validación.

  • Input La clase proporciona una opción para analizar los datos enviados a través de formularios html, así como parámetros http, variables de servidor y agentes de usuario.

En este capítulo, aprendamos Form programming en FuelPHP.

Formar

Como se discutió anteriormente, la clase Form proporciona métodos para crear elementos de formulario html y los métodos importantes son los siguientes:

abierto()

open()se utiliza para crear un nuevo formulario. Proporciona los siguientes dos parámetros:

  • $attributes - atributos de la etiqueta de formulario como matriz o simplemente la URL de acción como cadena.

  • $hidden - matriz de nombre de campo oculto y sus valores.

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

cerca()

close() simplemente cierra el formulario.

echo Form::close();

entrada()

input()crea un elemento de entrada html. Tiene los siguientes tres parámetros,

  • $field - nombre del elemento de entrada

  • $value - valor del elemento de entrada

  • $attributes - atributos del elemento de entrada como matriz

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

elemento de etiqueta

labelcrea un elemento de etiqueta html. Tiene los siguientes tres parámetros,

  • $label - etiqueta para mostrar

  • $id - ID de elemento de formulario asociado

  • $attributes - atributos del elemento de etiqueta como matriz

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

oculto

hidden es similar al método de entrada, excepto que establece el tipo de elemento de entrada en oculto.

contraseña

password es similar al método de entrada, excepto que establece el tipo de elemento de entrada en contraseña.

radio

radioes similar al método de entrada, excepto que establece el tipo de elemento de entrada en radio. Tiene los siguientes cuatro parámetros,

  • $field - nombre del elemento de entrada

  • $value - valor del elemento de entrada

  • $checked - si el elemento está marcado o no (verdadero / falso)

  • $attributes - atributos del 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');

caja

checkboxes similar al método de entrada, excepto que establece el tipo de elemento de entrada en la casilla de verificación. Tiene los siguientes cuatro parámetros,

  • $field - nombre del elemento de entrada

  • $value - valor del elemento de entrada

  • $checked - si el elemento está marcado o no (verdadero / falso)

  • $attributes - atributos del 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');

archivo

file es similar al método de entrada, excepto que establece el tipo de elemento de entrada en archivo.

textarea

textareacrea el elemento textarea html. Tiene los siguientes tres parámetros,

  • $field - nombre del elemento textarea

  • $value - valor del elemento textarea

  • $attributes - atributos del elemento textarea como matriz

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

Seleccione

selectcrea un elemento de selección HTML. Tiene los siguientes cuatro parámetros:

  • $field - nombre del elemento seleccionado

  • $values - valores de selección inicial

  • $options- opciones como matriz. Las opciones se pueden agrupar usando una matriz anidada

  • $attributes - atributos del elemento de entrada como matriz

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

enviar

submit es similar al método de entrada, excepto que establece el tipo de elemento de entrada que se enviará.

botón

buttoncrea un elemento de botón html. Tiene los siguientes tres parámetros,

  • $field - nombre del elemento del botón

  • $value - valor del elemento de botón

  • $attributes - atributos del elemento de botón como matriz

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

Reiniciar

reset es similar al método de entrada, excepto que establece el tipo de elemento de entrada para restablecer.

fieldset_open

fieldset_open crea un conjunto de campos html y elementos de leyenda. Tiene los siguientes dos parámetros:

  • attributes - atributos del elemento fieldset como matriz

  • legend - nombre de la leyenda a crear

// 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 la etiqueta de cierre del conjunto de campos HTML.

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

Clase de entrada

La clase de entrada proporciona métodos para leer todos los datos de la solicitud junto con los detalles del formulario. Algunos de los métodos importantes son los siguientes:

uri

uri devuelve el URI actual de la solicitud

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

método

method devuelve el método HTTP utilizado en la solicitud

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

obtener

getpermite leer variables $ _GET. Tiene los siguientes dos parámetros,

  • $index - índice de la matriz $ _GET

  • $default - valor predeterminado, si no se encuentra el índice.

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

enviar

postpermite leer las variables $ _POST. Tiene los siguientes dos parámetros,

  • $index - índice de la matriz $ _POST

  • $default - valor predeterminado, si no se encuentra el índice

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

param

parampermite recuperar elementos de las variables $ _GET, $ _POST, $ _PUT o $ _DELETE. Tiene los siguientes dos parámetros,

  • $index - índice de la matriz

  • $default - valor predeterminado, si no se encuentra el índice

Si no se especifica ningún parámetro, devolverá todos los elementos.

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

archivo

filepermite leer variables $ _FILE. Tiene los siguientes dos parámetros,

  • $index - índice de la matriz $ _POST

  • $default - valor predeterminado, si no se encuentra el índice

echo Input::file();

is_ajax

is_ajax devuelve verdadero, si la solicitud se realiza a través de AJAX.

echo Input::is_ajax() // return false

protocolo

protocol devuelve el protocolo HTTP utilizado en la solicitud.

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

ip

ip devuelve la dirección IP a través de la cual se realiza la solicitud.

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

real_ip

real_ip intenta devolver la dirección IP real (si el cliente está detrás del proxy) a través de la cual se realiza la solicitud.

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

servidor

serverpermite leer las variables $ _SERVER. Tiene los siguientes dos parámetros,

  • $index - índice de la matriz $ _POST

  • $default - valor predeterminado, si no se encuentra el índice.

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

referente

referrerdevuelve el referente de la variable $ _SERVER. Es un método de acceso directo para obtener la referencia http de la solicitud actual.

agente de usuario

user_agentdevuelve el agente de usuario de la variable $ _SERVER. Es un método de acceso directo para obtener el agente de usuario http de la solicitud actual.

query_string

query_stringdevuelve la cadena de consulta de la variable $ _SERVER. Es un método de acceso directo para obtener la cadena de consulta de la solicitud actual.

encabezados

headersdevuelve los encabezados específicos o todos. Tiene los siguientes dos parámetros:

  • $index - nombre de los encabezados HTTP

  • $default - valor predeterminado, si no se encuentra el índice.

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

extensión

extension devuelve la extensión URI de la solicitud actual.

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

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

Ejemplo de trabajo

Creemos un formulario simple para agregar un nuevo empleado usando la clase Form e Input.

Crear formulario

Crear nueva acción get_add en el controlador de empleados de la siguiente manera.

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

Ahora, agregue la vista para la acción, fuel / app / views / employee / add.php de la siguiente manera.

<!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>

Aquí, hemos utilizado bootstrappara diseñar el formulario. FuelPHP proporciona soporte completo para componentes de arranque. Ahora, al solicitar la página, http: // localhost: 8080 / employee / add mostrará el siguiente formulario.

Formulario de proceso

Cree una nueva acción, post_add para procesar el formulario y agregue los datos del empleado ingresados ​​por el usuario en la base de datos en el controlador de empleados de la siguiente manera.

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

Aquí, hemos sido redirigidos a la página de la lista de empleados, una vez que los datos ingresados ​​por el usuario se guardan en la base de datos. A continuación, crearemos la página de la lista de empleados.

Empleado de lista

Cree una nueva acción, action_list para incluir al empleado en la base de datos de la siguiente manera.

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

Crear nueva vista, fuel/app/views/employee/list para la acción anterior de la siguiente manera.

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

Ver el formulario

Ahora, solicite la URL, http://localhost:8080/employee/add, ingrese algunos datos de los empleados como se muestra en la siguiente captura de pantalla y envíe el formulario.

Luego, muestra todos los empleados (incluido uno recién agregado) disponibles en la base de datos de la siguiente manera: