Подтвердить что ты не робот

CakePHP multiple select "selected" не работает

В моей форме редактирования есть несколько элементов ввода: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array($selected))); ?>

При эхо-сигнале переменная $selected будет выглядеть так: -

"MySQL", "PHP"

Однако вход не автоматически выбирает параметр, соответствующий тегу.

Однако, когда я вручную помещаю выбранную опцию, она автоматически выбирает эту опцию; например.

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => array("MySQL", "PHP"))); ?>

Есть ли способ исправить это? Спасибо.

4b9b3361

Ответ 1

А, я понял это.

Я искал неправильное направление. Я предположил, что выбранные значения должны быть в строковой форме с кавычками и запятыми. (например, "MySQL", "PHP", "jQuery" ).

Вместо этого он должен быть в формате массива без каких-либо котировок и запятой. например.

Array
(
    [0] => MySQL
    [1] => PHP
    [2] => jQuery
)

Как только у меня отсортирован массив, я передаю его в поле зрения; например $this- > set ('selected', $myArray);

Тогда на форме мне просто нужно было бы повторить это следующим образом: -

<?php echo $this->Form->input('Article.tags', array('type' => 'select', 'multiple' => true, 'options' => $tags, 'selected' => $selected)); ?>

Ответ 2

Использовать ключевое слово по умолчанию:

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','default' => $selected));?>

Ответ 3

Не нужно делать выбранный атрибут

Например,

в контроллере:

$this->request->data = $this->Article->read(null, $id);

$this->set(array(
        'centers' => $this->Center->find('list'),
        'shopCategories' => $this->ShopCategory->find('list'),
        'brands' => $this->Brand->find('list')
    ));

в поле зрения:

echo $this->Form->input('Center', array('multiple' => 'multiple')); 

что все!

Ответ 4

cake php суммируется на основе соглашения об именах и формирования массива.

попробуйте сделать так: -

<?php echo $this->Form->input('Article.tags',array('options'=>$tags,'type'=>'select','label'=>'TDSP','class'=>'distributeSelect','multiple'=> 'true','selected' => $selected));?>

Ответ 5

В версии CakePHP 3.x вы можете установить value для предварительного выбора из списков

echo $this->Form->select(
    'Article.tags',
    ['PHP','MySQL','jQuery','AJAX'],
    [
        'multiple' => true,
        'value' => ['MySQL','AJAX']
    ]
);

HTML-элементы со значениями MySQL и AJAX будут отображаться как предварительно выбранные