formularios form control cakephp formhelper

form - hidden cakephp 3



Crear cuadros de lista ''seleccionar'' usando FormHelper en CakePHP (2)

Tengo dos modelos, Category y Point . Las asociaciones se definen como:

Category hasMany Point Point belongsTo Category

Al agregar Points a mi base de datos, me gustaría poder seleccionar la categoría a la que pertenece desde un cuadro <select> , junto con el resto de los datos del formulario.

¿Dónde debería set la lista de categorías y cómo podría hacerlo? ¿Y cómo iba a producir el cuadro de selección?

Supongo que podría hacerse con

$form->input(''categorieslist'',array(''type''=>''select'')); //categorieslist needs //setting somewhere.


En el controlador:

$categories = $this->Point->Category->find(''list''); $this->set(compact(''categories''));

En la vista:

$form->input(''category_id'',array(''type''=>''select''));


También para generalizar un poco:

En una vista con acceso al ayudante de formulario

<?php echo $form->input( ''dataKey'', array( ''type'' => ''select'', ''options'' => array( ''key1'' => ''val1'', ''key2'' => ''val2'', ), )); ?>

Lo anterior representará una entrada de selección con dos opciones. También puede colocar una opción vacía como primer elemento. Al pasar un valor de verdadero, simplemente agregará una opción vacía con un valor en blanco al comienzo de las opciones presentadas en el HTML.

<?php echo $form->input( ''dataKey'', array( ''type'' => ''select'', ''options'' => array( ''key1'' => ''val1'', ''key2'' => ''val2'', ), ''empty'' => true, )); ?>

Puede pasar una cadena a la tecla ''vacía'' para que muestre texto personalizado como el campo clave para la opción vacía.

<?php echo $form->input( ''dataKey'', array( ''type'' => ''select'', ''options'' => array( ''California'' => ''CA'', ''Oregon'' => ''OR'', ), ''empty'' => ''choose a state'', )); ?>

Un último ejemplo, también puede preseleccionar una opción con la tecla seleccionada. El valor debe coincidir con el valor de una de las opciones de selección, no la clave.

<?php echo $form->input( ''dataKey'', array( ''type'' => ''select'', ''options'' => array( ''California'' => ''CA'', ''Oregon'' => ''OR'', ), ''empty'' => ''choose a state'', ''selected'' => ''California'', )); ?>

Del Modelo

Model->find( ''list'', array( ... )); siempre devolverá una matriz formateada para usar con opciones de cuadro de selección. Si pasa datos a su vista almacenados en una variable con un nombre de modelo plural en minúsculas, es decir, ( $this->set( ''categories'', $categories ); , entonces automáticamente generará listas desplegables para modelos relacionados utilizando el formar ayuda en la vista y pasarle un índice de datos del mismo nombre de modelo en singular con el sufijo "_id".

La respuesta de Aziz en el n. ° 2 es el ejemplo de esa patada automática.