Не удаляется последний элемент Multiselect модуля Carbon Fields для WordPress?

Ссылка скопирована
1 ответ

При попытке удалить последний выбранный элемент в Multiselect, он не удаляется, в консоль падает ошибка.
Uncaught TypeError: Cannot read properties of null (reading 'map').

Не удаляется последний элемент Multiselect модуля Carbon Fields для Wordpress?

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Елена Вебер Ответ

Ошибка Cannot read properties of null (reading 'map') в Carbon Fields Multiselect обычно возникает, когда поле при очистке получает null, а UI/скрипт ожидает массив. То есть последний элемент удаляется, значение становится не пустым массивом, а null, и компонент падает.

Практический обходной путь: нормализуйте значение поля к массиву при сохранении или при получении. Для поля с именем my_multiselect можно сделать так:

add_filter('carbon_fields_field_save_pre_field=my_multiselect', function ($value) {
    if ($value === null || $value === '') {
        return [];
    }
 
    return (array) $value;
});

add_filter('carbon_fields_field_save_pre_field=my_multiselect', function ($value) { if ($value === null || $value === '') { return []; } return (array) $value; });

Если проблема проявляется только в админке конкретной версии Carbon Fields, сначала обновите Carbon Fields до актуальной версии и проверьте конфликт с кешем/сборкой админских скриптов. Также проверьте, что дефолтное значение поля задано массивом:

Field::make('multiselect', 'my_multiselect', 'Выбор')
    ->set_options([
        'one' => 'Первый',
        'two' => 'Второй',
    ])
    ->set_default_value([]);

Field::make('multiselect', 'my_multiselect', 'Выбор') ->set_options([ 'one' => 'Первый', 'two' => 'Второй', ]) ->set_default_value([]);

Если это поле уже используется на проде, не меняйте резко тип хранения. Сначала проверьте в базе, как сейчас сохранены значения, и протестируйте очистку поля на копии сайта. Для старых версий Carbon Fields иногда надежнее заменить поле на association/complex или обновить библиотеку, чем лечить JS-ошибку патчем в админке.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно