Вы не можете использовать поле выпадающего меню с множественным значением, потому что оно было создано для обработки одного значения. как флажок и радио, вот почему есть checkboxList (я думаю).
Но я нашел решение. Используйте частичный как тип поля в fields.yaml вместо выпадающего списка
https://octobercms.com/docs/backend/forms#field-partial
Создать парциальное с содержанием ниже (обратите внимание на [] в имени атрибута, поэтому он работает!)
Но иметь в виду, что это всего лишь уловка, и вы можно использовать только в приписывании Варианты YAMLhttps://octobercms.com/docs/backend/forms#field-dropdown
<?php
$fieldOptions = $field->options();
//get the field value as an array
$selectedValues = (array)$field->value;
?>
<!-- Dropdown -->
<?php if ($this->previewMode): ?>
<div class="form-control"><?= (isset($fieldOptions[$field->value])) ? e(trans($fieldOptions[$field->value])) : '' ?></div>
<?php else: ?>
<select
id="<?= $field->getId() ?>"
name="<?= $field->getName() ?>[]"
class="form-control custom-select"
<?= $field->getAttributes() ?>>
<?php if ($field->placeholder): ?>
<option value=""><?= e(trans($field->placeholder)) ?></option>
<?php endif ?>
<?php foreach ($fieldOptions as $value => $option): ?>
<?php
if (!is_array($option)) $option = [$option];
?>
<option
<?= in_array($value, $selectedValues) ? 'selected="selected"' : '' ?>
<?php if (isset($option[1])): ?>data-<?=strpos($option[1],'.')?'image':'icon'?>="<?= $option[1] ?>"<?php endif ?>
value="<?= $value ?>">
<?= e(trans($option[0])) ?>
</option>
<?php endforeach ?>
</select>
<?php endif?>
и для уа мл
```
select_field:
label: Sample
type: partial
path:$/author/plugin/models/classfolder/_my_partial.htm
attributes: {multiple:'multiple'}
options:
key:value
key:value
```
Лучше approche бы может построить виджет или сделать запрос на нагрузочный , если у вас есть возможность вы можете потрогать ядро и добавить
то же самое содержание в \ Modules \ бэкенд \ виджеты \ формы \ обертоны с именем _field_dropdownlist.htm
затем в \ Modules \ \ бэкенд виджеты \ форма \ form.php линии 630 изменение:
$optionModelTypes = ['dropdown', 'radio', 'checkboxlist', 'balloon-selector'];
, чтобы добавить часть имени без _field или .htm экс _field_dropdownlist.htm стать dropdowList
$optionModelTypes = ['dropdown', 'radio', 'checkboxlist', 'balloon-selector','dropdowlist'];
теперь в вашем YAML файл типа использования Жюст: DropDownList и он будет работать.
я сделал то же самое, как вы делали. Я создал частичное и задал атрибут имени опции multi select как массив, и все работает нормально. Но что помешало мне опубликовать этот ответ, так это то, как отображать выбранные параметры в поле выбора частичного. Я хотел бы попробовать ваш второй подход, который заключается в создании виджета. Я надеюсь, что это должно сработать и поблагодарить вас Грег Би –
Большое вам спасибо. Это действительно хорошо работает –
Привет, Не могли бы вы рассказать мне, как мне обновить поле с несколькими полями с пустым значением. В случае, если пользователь не хочет ничего выбирать. Я много пытаюсь, но я не мог найти лучшего решения. –