Страница 1 из 1
Динамические поля в модели
Добавлено: 2013.01.03, 01:19
justice
Приветствую.
Прошу не бить меня сильно, возможно тема была на форуме, но либо я не знаю что спрашивать либо искать не умею.
Есть такая задача:
Есть элементы Items которые принадлежат Categories.
Каждая Categories должна иметь несколько типов полей (текстовое поле, чекбокс, селект, мультиселект).
Причем количество полей не ограничено и пользователь в любой момент может добавить еще таких полей.
Если он выбирает тип поля селект/мультиселект, то должна быть возможность добавить необходимое количество вариантов выбора.
Подскажите как можно красиво реализовать такой функционал, ведь с большинстве cms или интернет магазинах такая возможность есть.
Читал про бехавиоры, но пока не понятно как их сюда прикрутить.
Ткните носом
Re: Динамические поля в модели
Добавлено: 2013.01.03, 02:58
porcelanosa
посмотрите как там сделано
обычно несколько таблиц
Re: Динамические поля в модели
Добавлено: 2013.01.03, 03:42
lancecoder
eav
Re: Динамические поля в модели
Добавлено: 2013.01.03, 09:25
ElisDN
В простейшем случае нужны две таблицы.
1. Список полей к типам товаров tbl_attribute (модель Attribute):
Код: Выделить всё
id (pk)
type_id (fk тип товара)
name (название поля)
alias (название транслитом, если нужно)
fieldtype (тип значения: text, checkbox, ...)
2. Значения для каждого товара tbl_attribute_value (модель AttributeValue):
Код: Выделить всё
id (pk)
product_id (fk продукт)
attribute_id (fk к tbl_attribute)
value (значение)
с отношением
Код: Выделить всё
'arrtibute'=>array(self::BELONGS_TO, 'Attribute', 'attribute_id')
Продукту добавляем отношение для получения значений его атрибутов
Код: Выделить всё
'attrvalues'=>array(self::HAS_MANY, 'AttributeValue', 'product_id')
И выводим циклом значения и подписи
Код: Выделить всё
<?php foreach ($product->attrvalues as $attrvalue): ?>
<p><?php echo $attrvalue->arrtibute->name; ?>: <?php echo $attrvalue->value; ?></p>
<?php endforeach; ?>
Re: Динамические поля в модели
Добавлено: 2013.01.03, 13:23
ElisDN
Развил тему у себя в статье
динамические атрибуты для товаров. Если что-то непонятно, то скажите и я дополню.
Re: Динамические поля в модели
Добавлено: 2013.01.03, 22:14
justice
porcelanosa писал(а):посмотрите как там сделано
обычно несколько таблиц
Привет. Где надо посмотреть не понял
Re: Динамические поля в модели
Добавлено: 2013.01.03, 22:16
lancecoder
т.е. у вас я могу в инпут поле вставить несколько значений?
Re: Динамические поля в модели
Добавлено: 2013.01.03, 22:18
justice
lancecoder писал(а):eav
Про eav я слышал, но есть пара моментов
1. Хотелось бы поподробнее со ссылками на статьи или примерами
2. Бегло почитал про еав увидел что не многим он нравится и какието проблемы с поиском возникают
Re: Динамические поля в модели
Добавлено: 2013.01.03, 22:20
lancecoder
проблема там одна, что у вас будет расти таблица валуе, но в данной технологии это не избежно, для кмс самое оно именно в этом один из их минусов
ссылки вам покажет гугл у меня вторая на хабр
Re: Динамические поля в модели
Добавлено: 2013.01.03, 22:22
lancecoder
монго дб гуглите тоже, там можете реализовать такое безболезнено
апд: п.с. монго как пример