Pergunta

Usando CakePhp:

Eu tenho um relacionamento muitos para um, vamos fingir que são muitas folhas para as árvores. Obviamente, eu cozinhei um formulário para adicionar uma folha a uma árvore e você pode especificar qual árvore é com uma caixa suspensa (tag) criada pelo ajudante de forma.

A única coisa é que a caixa selecionada sempre padroniza a Árvore nº 1, mas eu gostaria que ela fosse padrão para a árvore em que está sendo adicionado:

Por exemplo, chamando example.com/leaf/add/5 Solaria a interface para adicionar uma nova folha à árvore #5. A caixa suspensa para Leaf.tree_id Seria padrão para "Árvore 5", em vez de "Árvore 1", que atualmente se destaca.

O que eu preciso colocar no meu controlador de folhas e folha view/add.ctp para fazer isso?

Foi útil?

Solução

Você nunca deve usar select(), ou text(), ou radio() etc.; É uma prática terrível. Você deveria usar input():

$form->input('tree_id', array('options' => $trees));

Então no controlador:

$this->data['Leaf']['tree_id'] = $id;

Outras dicas

No CakePhp 1.3, use 'default'=>value Para selecionar o valor padrão em uma entrada de seleção:

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));

O terceiro parâmetro deve ser como a matriz ('selecionado' => valor)

 $this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));

Isso selecionará o valor de posição do segundo índice padrão padrão da lista de opções em $ Leafs.

Supondo que você esteja usando o Helper para gerar o formulário:

select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)

Defina o terceiro parâmetro para definir a opção selecionada.

versão CakePhp> = 3.6

echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);

Para fazer um texto padrão em uma caixa selecionada, use o $form->select() método. Aqui está como você faz isso.

$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');

$form->select('Model.name',$options,'f');

O código acima será selecionado Female Na caixa de listagem por padrão.

Continue assando ...

FormHelper::select(string $fieldName, array $options, 
array $attributes)

$attributes['value'] Para definir qual valor deve ser selecionado padrão

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1)
); ?>

Se você estiver usando o CakePhp versão 3.0 e acima, poderá adicionar valor padrão na entrada Selecionar usando o atributo vazio, conforme indicado no exemplo abaixo.

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);

A melhor resposta para isso pode ser

Não use SELCT para este trabalho de uso em vez

assim

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 ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top