Изменить параметры списка на другом поле выбора в Silverstripe

Есть ли способ сделать ListBoxField автоматически изменить его значения, выбрав другой ListBoxField? Второй ListBox должен зависеть от первого ListBox выбор.

В моей задней части Silverstripe 3 у меня есть два ListBoxFields. Когда категория Listbox изменен Места Listbox следует изменить доступные опции для выбора.

$fields = new FieldList(
TextField::create('Title', 'Title'),
UploadField::create('File', 'File')->setFolderName('Uploads/Files')->setAllowedExtensions(array('odt', 'jpg', 'jpeg', 'png', 'gif', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pdf')),
ListboxField::create('Categories', 'Categories')->setMultiple(true)->setSource(Category::get()->map('ID', 'Title'))->setAttribute('data-placeholder', 'Click to select'),
ListboxField::create('Locations', 'Locations')->setMultiple(true)->setSource(Location::get()->map('ID', 'Title'))->setAttribute('data-placeholder', 'Click to select')
);
return $fields;

2

Решение

Не по умолчанию.

Вы можете попробовать этот модуль: https://github.com/unclecheese/silverstripe-display-logic

0

Другие решения

Я повторяю комментарий @schellmax, чтобы использовать …

  • github.com/sheadawson/silverstripe-dependentdropdownfield

Это позволяет одному выпадающему списку автоматически обновляться при смене другого дропа. Вы создаете простую функцию, которая вызывается с выбранным значением и возвращает значения для зависимого раскрывающегося списка.

// 1. Create a callable function that returns an array of options for the DependentDropdownField.
// When the value of the field it depends on changes, this function is called passing the
// updated value as the first parameter ($val)
$datesSource = function($val) {
if ($val == 'one') {
// return appropriate options array if the value is one.
}
if ($val == 'two') {
// return appropriate options array if the value is two.
}
};

$fields = FieldList::create(
// 2. Add your first field to your field list,
$fieldOne = DropdownField::create('FieldOne', 'Field One', array('one' => 'One', 'two' => 'Two')),
// 3. Add your DependentDropdownField, setting the source as the callable function
// you created and setting the field it depends on to the appropriate field
DependentDropdownField::create('FieldTwo', 'Field Two', $datesSource)->setDepends($fieldOne)
);
0

По вопросам рекламы [email protected]