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