Для реализации функции добавления нескольких опций к товару в карточке товара с ограничением — выбирать не более одной опции из каждой группы — можно использовать следующие шаги:
### 1. Определение Структуры Данных
Сначала необходимо определить структуру данных для товара и его опций. Например, вы можете использовать JSON-формат:
```json
{
"product_id": 123,
"name": "Продукт",
"options": [
{
"group": "Цвет",
"choices": ["Красный", "Синий", "Зеленый"]
},
{
"group": "Размер",
"choices": ["S", "M", "L"]
}
]
}
```
### 2. Визуализация на Frontend
На стороне клиента вы можете использовать HTML и JavaScript для создания интерфейса, позволяющего выбирать опции.
#### Пример HTML-кода:
```html
<div id="product-options">
<div class="option-group">
<h4>Цвет</h4>
<label><input type="radio" name="color" value="Красный"> Красный</label>
<label><input type="radio" name="color" value="Синий"> Синий</label>
<label><input type="radio" name="color" value="Зеленый"> Зеленый</label>
</div>
<div class="option-group">
<h4>Размер</h4>
<label><input type="radio" name="size" value="S"> S</label>
<label><input type="radio" name="size" value="M"> M</label>
<label><input type="radio" name="size" value="L"> L</label>
</div>
</div>
```
### 3. Логика Выбора Опций
Используйте JavaScript для обработки выбора опций. Вы можете добавлять обработчики событий на элементы формы, чтобы отслеживать, какие опции были выбраны.
```javascript
document.addEventListener('change', function(event) {
if (event.target.name === 'color' || event.target.name === 'size') {
// Здесь можно выполнять действия при изменении выбора
const selectedOptions = {
color: document.querySelector('input[name="color"]:checked')?.value || null,
size: document.querySelector('input[name="size"]:checked')?.value || null,
};
console.log(selectedOptions);
// Можно отправить данные на сервер или обновить интерфейс
}
});
```
### 4. Валидация и Отправка
При отправке формы валидация может быть выполнена на стороне клиента для проверки, что выбрана хотя бы одна опция из каждой группы. Затем данные могут быть отправлены на сервер (например, с использованием AJAX).
### 5. Обработка на Сервере
На серверной стороне необходимо обработать новые данные, чтобы убедиться, что они соответствуют товару и будут правильно учтены в заказе.
### Заключение
С помощью вышеописанных шагов можно интегрировать функцию выбора нескольких опций для товара с ограничением на выбор одной опции из каждой группы. Это обеспечивает удобный пользовательский интерфейс и эффективное взаимодействие с сервером.