CakePHP seleccione el valor predeterminado en la entrada SELECT
-
20-09-2019 - |
Pregunta
El uso de CakePHP:
Tengo una relación muchos-a-uno, vamos a suponer que es muchas hojas de los árboles. Por supuesto, he preparado un formulario para agregar una hoja de un árbol, y se puede especificar qué árbol es con un cuadro desplegable (etiqueta) creado por el asistente de formulario.
La única cosa es que el cuadro de selección tenga por defecto Árbol # 1, pero me gustaría que por defecto la rama que está siendo añadido a:
Por ejemplo, sería example.com/leaf/add/5
llamar a la interfaz para añadir una nueva hoja de árbol # 5. El cuadro desplegable para Leaf.tree_id
sería por defecto a "Árbol 5", en lugar de "Árbol 1" que en la actualidad por defecto.
¿Qué necesito para poner en mi controlador de la hoja y la hoja view/add.ctp
hacer esto?
Solución
Nunca se debe utilizar select()
o text()
o radio()
etc .; es terrible práctica. Debe utilizar input()
:
$form->input('tree_id', array('options' => $trees));
A continuación, en el controlador:
$this->data['Leaf']['tree_id'] = $id;
Otros consejos
En CakePHP 1.3, el uso 'default'=>value
para seleccionar el valor predeterminado en una selección de entrada:
$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));
el tercer parámetro debe ser como array ( 'selecciona' => valor)
$this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));
Esto seleccionará valor predeterminado segunda posición de índice de la lista de opción de $ hojas.
Si se asume que está utilizando el asistente de formulario para generar la forma:
select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)
Ajuste el tercer parámetro para ajustar la opción seleccionada.
versión cakephp> = 3,6
echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);
Para hacer un defecto de texto en un cuadro de selección utilice el método $form->select()
. Aquí es cómo lo hace.
$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');
$form->select('Model.name',$options,'f');
El código anterior seleccionará Female
en el cuadro de lista por defecto.
Mantener la cocción ...
FormHelper::select(string $fieldName, array $options,
array $attributes)
$attributes['value']
para establecer qué valor debe ser seleccionado por defecto
<?php echo $this->Form->select('status', $list, array(
'empty' => false,
'value' => 1)
); ?>
Si está utilizando cakephp versión 3.0 y superior, entonces usted puede agregar valor por defecto en la selección de entrada usando el atributo vacío como se da en ejemplo a continuación.
echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);
La mejor respuesta a esto podría ser
No utilice esta entrada de selección para el uso en su lugar de trabajo
como esto
echo $this->Form->input('field_name', array(
'type' => 'select',
'options' => $options_arr,
'label' => 'label here',
'value' => $id, // default value
'escape' => false, // prevent HTML being automatically escaped
'error' => false,
'class' => 'form-control' // custom class you want to enter
));
Espero que ayuda.