Вопрос

Использование 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
        ));

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top