Создание зависимых полей в админке

#1 19 марта 2024 в 19:02

Вопрос, как правильно в форме контроллера в админке, реализовать подобное?

Допустим есть два поля и в зависимости от выбора опции первого поля, получаем нужный список второго поля. т.е. надо во втором поле отловить выбор первого поля.

  1. new fieldList('field1', [
  2. 'title' => Поле 1,
  3. 'default' => 'left',
  4. 'items' => [
  5. 'item1' => 'Позиция 1',
  6. 'item2' => 'Позиция 2',
  7. 'item3' => 'Позиция 3'
  8. ]
  9. ]),
  10. new fieldList('field2', [
  11. 'title' => Зависимое поле 2,
  12. 'items' => [
  13. если получаем item1, отдаем список подготовленный для item1
  14. если получаем item2, отдаем список подготовленный для item2
  15. ]
  16. ])
#3 20 марта 2024 в 04:09

 AtlantisWeb, по аналогии с этим github.com/instantsoft/icms2/blob/aae9d6fe81381121d86f4b4b6724ae334db7f2b6/system/controllers/content/widgets/list/options.form.php#L119

Zau4man

С обычным списком работает, а вот с «multiple_keys» не получается подружить)

  1. new fieldList('items', [
  2. 'add_title' => LANG_COMPANY_CONITEMS,
  3. 'is_multiple' => true,
  4. 'dynamic_list' => true,
  5. 'single_select' => 0,
  6. 'select_title' => LANG_COMPANY_PRODUCT,
  7. 'multiple_keys' => [
  8. 'ingredient_id' => 'field', 'count' => 'field_value'
  9. ],
  10. 'parent' => array(
  11. 'list' => 'storage_out',
  12. 'url' => href_to('company', 'fields_in_ajax')
  13. ),
  14. 'generator' => function ($field, $request) use ($ingredients) {
  15. $items = [];
  16. foreach ($ingredients as $item) {
  17. $items[$item['id']] = ['title' => $item['name']];
  18. }
  19. return $items;
  20. },
  21. 'visible_depend' => array('storage_out' => array('hide' => array('0')))
  22. ]),
#4 20 марта 2024 в 08:41

а вот с «multiple_keys» не получается подружить)

AtlantisWeb

ну данные будут прилетать. Останется повторить логику мультипл поля, и перерисовать поле заново. Тут придется дописывать js, да.

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.