CakePHP - Manejo de formularios
CakePHP proporciona varias etiquetas integradas para manejar formularios HTML de manera fácil y segura. Como muchos otros frameworks PHP, los elementos principales de HTML también se generan usando CakePHP. A continuación se muestran las diversas funciones que se utilizan para generar elementos HTML.
Las siguientes funciones se utilizan para generate select options -
Sintaxis | _selectOptions (matriz $ matriz de elementos () , matriz $ matriz de padres () , booleana $ showParentsnull , matriz $ matriz de atributos () ) |
---|---|
Parámetros |
|
Devoluciones | formación |
Descripción | Devuelve una matriz de elementos OPTION / OPTGROUP formateados |
Se utilizan las siguientes funciones to generate HTML select element.
Sintaxis | select (cadena $ fieldName, matriz $ opciones matriz (), matriz $ atributos matriz ()) |
---|---|
Parámetros | Atributo de nombre del SELECT Matriz de los elementos OPTION (como 'valor' => pares de 'Texto') que se utilizarán en el elemento SELECT. |
Devoluciones | Elemento SELECT formateado. |
Descripción | Devuelve un elemento SELECT formateado. |
Se utilizan las siguientes funciones to generate button en la página HTML.
Sintaxis | Botón (cadena $ título, matriz $ opcionesarray ()) |
---|---|
Parámetros |
|
Devoluciones | Etiqueta de botón HTML. |
Descripción | Crea un <button>etiqueta. El atributo de tipo por defecto estype="submit". Puede cambiarlo a un valor diferente usando$options['type']. |
Se utilizan las siguientes funciones to generate checkbox en la página HTML.
Sintaxis | Casilla de verificación (cadena $ fieldName, matriz $ optionsarray ()) |
---|---|
Parámetros |
|
Devoluciones | Un elemento de entrada de texto HTML. |
Descripción | Crea un widget de entrada de casilla de verificación. |
Se utilizan las siguientes funciones to create form en la página HTML.
Sintaxis | crear ( $ modelnull mixto , array $ optionsarray () ) |
---|---|
Parámetros |
|
Devoluciones | Una etiqueta FORM de apertura con formato. |
Descripción | Devuelve un elemento FORM HTML. |
Las siguientes funciones se utilizan para provide file uploading functionality en la página HTML.
Sintaxis | file (cadena $ fieldName, matriz $ optionsarray ()) |
---|---|
Parámetros |
|
Devoluciones | Una entrada de archivo generada. |
Descripción | Crea un widget de entrada de archivos. |
Las siguientes funciones se utilizan para crear hidden element en la página HTML.
Sintaxis | oculto (cadena $ fieldName , matriz $ optionsarray () ) |
---|---|
Parámetros |
|
Devoluciones | Una entrada oculta generada |
Descripción | Crea un campo de entrada oculto |
Las siguientes funciones se utilizan para generar input element en la página HTML.
Sintaxis | Entrada (cadena $ nombreCampo, matriz $ opciones matriz ()) |
---|---|
Parámetros |
|
Devoluciones | Widget de formulario completo |
Descripción | Genera un elemento de entrada de formulario completo con etiqueta y div contenedor |
Las siguientes funciones se utilizan para generar radio button en la página HTML.
Sintaxis | Radio (cadena $ fieldName , matriz $ optionsarray () , matriz $ atributosarray () ) |
---|---|
Parámetros |
|
Devoluciones | Conjunto de widgets de radio completo |
Descripción | Crea un conjunto de widgets de radio. Creará una leyenda y un conjunto de campos de forma predeterminada. Use $ options para controlar esto. |
Las siguientes funciones se utilizan para generar submit en la página HTML.
Sintaxis | Enviar (cadena $ título nulo, matriz $ opciones matriz ()) |
---|---|
Parámetros |
|
Devoluciones | Un botón de envío HTML |
Descripción | Crea un elemento de botón de envío. Este método generará elementos <input /> que se pueden usar para enviar y restablecer formularios usando $ options. Los envíos de imágenes se pueden crear proporcionando una ruta de imagen para $ caption. |
Se utilizan las siguientes funciones to generate textarea element en la página HTML.
Sintaxis | Textarea (cadena $ nombreCampo, matriz $ opciones matriz ()) |
---|---|
Parámetros |
|
Devoluciones | Un elemento de entrada de texto HTML generado |
Descripción | Crea un widget de área de texto |
Ejemplo
Realice cambios en el config/routes.php archivo como se muestra en el siguiente código.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('register',['controller'=>'Registrations','action'=>'index']);
$builder->fallbacks();
});
Crear un RegistrationsController.php archivar en
src/Controller/RegistrationsController.php. Copie el siguiente código en el archivo del controlador.
src/Controller/RegistrationsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
class RegistrationsController extends AppController{
public function index(){
$country = array('India','United State of America','United Kingdom');
$this->set('country',$country);
$gender = array('Male','Female');
$this->set('gender',$gender);
}
}
?>
Crea un directorio Registrations a src/Template y en ese directorio, cree un View archivo llamado index.php. Copie el siguiente código en ese archivo.
src/Template/Registrations/index.php
<?php
echo $this->Form->create(NULL,array('url'=>'/register'));
echo '<label for="country">Country</label>';
echo $this->Form->select('country',$country);
echo '<label for="gender">Gender</label>';
echo $this->Form->radio('gender ',$gender);
echo '<label for="address">Address</label>';
echo $this->Form->textarea('address');
echo $this->Form->file('profilepic');
echo '<div>'.$this->Form->checkbox('terms').
'<label for="country">Terms ∓ Conditions</label></div>';
echo $this->Form->button('Submit');
echo $this->Form->end();
?>
Ejecute el ejemplo anterior visitando la siguiente URL:
http: // localhost / cakephp4 / registrarse
Salida
Tras la ejecución, recibirá el siguiente resultado.