plantillas - cakephp: cómo obtener una variedad de elementos de un formulario web
set layout cakephp 3 (3)
En mi forma cakephp tengo el siguiente código
<p> <?php echo $form->input(''option[]'',array(''size''=>13)); ?> </p>
<p> <?php echo $form->input(''option[]'',array(''size''=>13)); ?> </p>
<p> <?php echo $form->input(''option[]'',array(''size''=>13)); ?> </p>
<p> <?php echo $form->input(''option[]'',array(''size''=>13)); ?> </p>
Estoy tratando de obtener valores de un conjunto de cuadros de texto de entrada, la cantidad de cuadros de texto puede ser establecida por el usuario, por lo que no puedo dar nombres individuales de cada cuadro de texto, pero ¿Cómo puedo obtener valores de mi controlador para insertar datos en bases de datos? mesa
Gracias
Puede dejar el formulario tal como está (y usar sugerencias de @Wizzard y @Lee), pero la mejor práctica es usar una variable incremental para construir la lista. es decir:
for($i=0;$i<$option_number;$i++){
echo $form->input("MyModel.{$i}.option");
}
De esta manera, su variable después de publicar el formulario se verá así:
data [MyModel] [0] [option] = ''the value'' data MyModel [option] = ''the value'' data [MyModel] [2] [option] = ''the value'' ... y así sucesivamente ...
En el controlador puede acceder a los datos publicados por:
print_r ($ this-> data);
Eche un vistazo a saveAll () (busque saveAll en su navegador y busque la estructura de datos sugerida)
Seguro que están en la matriz $ this-> params [''form''] en el controlador ... o $ this-> data
En el método de su controlador, haga un var_dump ($ this); y verás dónde aparecen
sus campos de entrada son nombrados de la misma manera: option[]
. Esto es bueno. Hace que php los convierta automáticamente en una matriz cuando se carga la solicitud. Para que pueda obtenerlos en su controlador CakePHP de esta manera:
$this->params[''form''][''option''][0]
$this->params[''form''][''option''][1]
... and so on ...