Исправлено извлечение 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) {
|
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 {
|
return {
|
||||||
results: data.results,
|
results: processedResults,
|
||||||
pagination: {
|
pagination: {
|
||||||
more: data.pagination.more
|
more: data.pagination.more
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user