Как добавить дополнительные input`ы в зависимости от условия? Друзья, добрый день, не знаю как точнее сформулировать вопрос. Имеется сайт - агрегатор событий. На нем есть несколько категорий событий и данные, которые требуются для события, и эти данные отличаются в зависимости от категории к которой относится событие.
Например:
Событие: Выставка картин. Категория: Выставки. Требуемые поля: Наименование, описание, дата начала-конца, цена.
И другое событие:
Фильм . Категория: Кино. Требуемые поля: Наименование, описание, дата начала-конца, цена. + Кинотеатр, время начала в каждом кинотеатре, цена, ит.д
То есть, вариант с кинотеатром, это отличающее событие, соответственно на странице представления это все дело нужно вывести в ином формате.
Вопрос такой.Как правильно организовать структуру, добавления события?
Думаю сделать так:
Добавить отдельный класс CinemaEvent наследуемый от главного Event. И обрабатывать его по отдельному роуту.
Но система работает по паттерну , а категория к событию добавляется через input=select в самом событии.
Так же не забудьте пожалуйста про базу данных. Она работает на . И все события добавляются в одну таблицу Events с кучкой полей.
Приветствуется любое решение которое вы считаете более логичным и которое легко можно будет расширять, даже если это решение имеет кардинально другую схему бд, фс, и классов. Благодарю за внимание.

21 Авг 2019 в 07:04
153 +1
0
Ответы
1

Одним из возможных решений для данной задачи может быть использование паттерна стратегия.
Вы можете создать абстрактный класс Event, в котором будут определены основные поля (наименование, описание, дата начала и конца, цена) и абстрактный метод для вывода дополнительных полей в зависимости от категории события.

Затем создать конкретные классы для каждой категории событий (например, ExhibitionEvent и CinemaEvent), которые будут наследоваться от класса Event и реализовывать метод для вывода дополнительных полей.

Для работы с базой данных вы можете создать таблицу Events с основными полями и отдельные таблицы для дополнительных полей каждой категории событий. Вы можете использовать связь один к одному между таблицей Events и таблицами дополнительных полей.

При добавлении события пользователем на сайте, вы можете использовать JavaScript для динамического отображения дополнительных полей в зависимости от выбранной категории события. Например, при выборе категории "Кино" отображается поле для выбора кинотеатра и времени начала.

Таким образом, вы сможете легко добавлять новые категории событий и их дополнительные поля без изменения основной структуры и базы данных.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 622 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир