Страница 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
монго дб гуглите тоже, там можете реализовать такое безболезнено
апд: п.с. монго как пример