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

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

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

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

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

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

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

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир