CakePHP выберите значение по умолчанию в SELECT input
-
20-09-2019 - |
Вопрос
Использование CakePHP:
У меня отношения "многие к одному", давайте представим, что это отношения "много листьев к Деревьям".Конечно, я испек форму для добавления Листа к Дереву, и вы можете указать, какое это Дерево, с помощью выпадающего списка ( тега), созданного помощником формы.
Единственное, в поле ВЫБОРА всегда по умолчанию используется Дерево # 1, но я бы хотел, чтобы по умолчанию оно соответствовало дереву, в которое оно добавляется:
Например, вызывая example.com/leaf/add/5
вызовет интерфейс для добавления нового Листа в Дерево № 5.Выпадающий список для Leaf.tree_id
по умолчанию было бы выбрано "Дерево 5", вместо "Дерева 1", которое в настоящее время используется по умолчанию.
Что мне нужно поместить в мой контроллер Leaf и Leaf view/add.ctp
чтобы сделать это?
Решение
Вы никогда не должны использовать select()
, или text()
, или radio()
и т.д.;это ужасная практика.Вы должны использовать input()
:
$form->input('tree_id', array('options' => $trees));
Затем в контроллере:
$this->data['Leaf']['tree_id'] = $id;
Другие советы
В CakePHP 1.3 используйте 'default'=>value
чтобы выбрать значение по умолчанию в выбранном вводе:
$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));
третий параметр должен быть похож на array('selected' =>значение)
$this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));
При этом будет выбрано значение позиции второго индекса по умолчанию из списка опций в $ leafs.
Предполагая, что вы используете form helper для создания формы:
select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)
Установите третий параметр, чтобы установить выбранную опцию.
версия cakephp >= 3.6
echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);
Чтобы задать текст по умолчанию в поле выбора, используйте $form->select()
способ.Вот как вы это делаете.
$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');
$form->select('Model.name',$options,'f');
Приведенный выше код выберет Female
в списке по умолчанию.
Продолжайте выпекать...
FormHelper::select(string $fieldName, array $options,
array $attributes)
$attributes['value']
чтобы установить, какое значение должно быть выбрано по умолчанию
<?php echo $this->Form->select('status', $list, array(
'empty' => false,
'value' => 1)
); ?>
Если вы используете cakephp версии 3.0 и выше, то вы можете добавить значение по умолчанию в select input, используя пустой атрибут, как показано в примере ниже.
echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);
Лучшим ответом на это могло бы быть
Не используйте selct для этой работы, вместо этого используйте input
вот так
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
));
Надеюсь, это поможет.