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"))); ?>
Есть ли способ исправить это? Спасибо.
Ответы
Ответ 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
будут отображаться как предварительно выбранные