Исправлено извлечение ID товаров из API в форме поступления
Проблема:
- Поиск товаров возвращал пустые результаты
- API /products/api/search-products-variants/ возвращает ID в формате 'product_123'
- Форма incoming ожидает числовой ID (123)
- Select2 не мог сохранить значение из-за несовпадения формата
Решение:
- Добавлена функция processResults в AJAX настройках Select2
- Извлекаем числовой ID из строки 'product_123' -> '123'
- Обрабатываем как группированные результаты, так и плоские
- Сохраняем остальные поля (text, sku, price, actual_price)
Логика обработки:
1. Проверяем наличие children (группа)
2. Если группа - обрабатываем каждый item в children
3. Если плоский список - обрабатываем напрямую
4. Используем .replace('product_', '') для извлечения ID
Теперь Select2 корректно:
- Показывает список товаров
- Сохраняет выбранное значение
- Отправляет числовой ID в форму
This commit is contained in:
@@ -233,8 +233,36 @@ document.addEventListener('DOMContentLoaded', function() {
|
||||
};
|
||||
},
|
||||
processResults: function (data) {
|
||||
// Преобразуем результаты: извлекаем числовые ID из 'product_123'
|
||||
const processGroup = function(group) {
|
||||
if (group.children) {
|
||||
// Это группа - обрабатываем детей
|
||||
return {
|
||||
text: group.text,
|
||||
children: group.children.map(item => ({
|
||||
id: item.id.replace('product_', ''), // Убираем префикс
|
||||
text: item.text,
|
||||
sku: item.sku,
|
||||
price: item.price,
|
||||
actual_price: item.actual_price
|
||||
}))
|
||||
};
|
||||
} else {
|
||||
// Это отдельный элемент
|
||||
return {
|
||||
id: group.id.replace('product_', ''),
|
||||
text: group.text,
|
||||
sku: group.sku,
|
||||
price: group.price,
|
||||
actual_price: group.actual_price
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const processedResults = data.results.map(processGroup);
|
||||
|
||||
return {
|
||||
results: data.results,
|
||||
results: processedResults,
|
||||
pagination: {
|
||||
more: data.pagination.more
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user