В OctoberCMS возможно ли сделать тип: tagList зависимым от поля формы типа: выпадающего? - PullRequest
0 голосов
/ 09 февраля 2019

В OctoberCMS вы можете легко сделать раскрывающийся список зависимым от другого раскрывающегося списка.Тем не менее, я не смог найти решение, чтобы поле формы tagList зависело от выпадающего списка.

Например, у меня есть следующие поля в бэкэнд-форме:

-Subject
-Category
-Tags

У меня есть следующие таблицы в БД:

-subjects(subject_id, subject, category_id)
-categories(category_id, category)
-tags(tag_id, tag)
-categories_tags(category_id, tag_id) pivot table
-subject_tags(subject_id, tag_id) pivot table

Я хочу заполнить свойСелектор тегов tagList на основе категории, выбранной из раскрывающегося списка в той же форме.Как я выбираю категорию фотографии и получаю обратно теги, которые назначены для фотографии.

Возможно ли это сделать в октябре?

Какие модели иотношения я должен использовать для достижения этого?

1 Ответ

0 голосов
/ 26 августа 2019

Конечно, вы можете.Метод, который я использовал следующим образом:

  1. Добавьте к полю поля selectedOn, которые зависят от категории в файле field.yaml (аналогично выпадающим спискам).Мой скриншот файла fields.yaml был прикреплен здесь.

    введите описание изображения здесь

  2. Затем создайте метод getYOUR_FIELDOptions (), как в обычных тегах.

  3. Создайте запрос, используя приведенный ниже формат, и верните его в качестве возвращаемого значения вышеуказанного метода

    Service :: whereIn ('category', explode (',', $это-> категории)) -> orderBy ('id') -> списки ('title', 'id');

    • Сервис - Ваша модель

    • $ this-> category - Зависимое имя поля

    • lists ('title', 'id') - Поместите тип поля, который должен отображаться в списке тегов, в качестве первогопараметр, то следующее поле будет использовано в качестве ключа.Этот метод отлично работал для меня.

    Полный метод:

        public function getServicesOptions() {
    
        return Service::whereIn('category', explode(',',$this->categories))->orderBy('id')->lists('title', 'id');
    }
    
...