CakePhp Selecione Valor padrão na entrada Selecionar
-
20-09-2019 - |
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?
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.