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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top