Как получить информацию о категории из Composer?

Возможно ли выполнить некоторый код (из компонента темы), когда в редакторе выбрана категория? Меня интересует получение информации о выбранной категории как сразу после открытия редактора, так и при изменении выбора в выпадающем списке категорий.

Думал, что это, возможно, можно реализовать, модифицировав контроллер или компонент, например, контроллер редактора. Однако не удалось найти информацию о категории.

Вы можете наблюдать за model.categoryId в контроллере композитора и запускать свой код при изменении.

Спасибо @fzngagan!

У меня есть дополнительный вопрос, такого раньше никогда не наблюдал :slight_smile:. Придумал следующее решение, которое, похоже, работает.

const { observes } = require('discourse-common/utils/decorators');
api.modifyClass("controller:composer", {
    @observes('model.categoryId')
    getCategory() {
        let categoryId = this.get("model.categoryId");
        if (categoryId == null) return;
        
        let category = this.site.categories.findBy("id", categoryId).name;
    }
});

Это правильный (или предпочтительный) способ сделать это? И является ли это лучшим способом получить название категории по её ID?

Вы можете проверить, что содержит объект model. Возможно, там уже есть название категории.

Под «объектом модели» вы имеете в виду, что мне нужно сделать что-то вроде этого?

this.get("model")

Редактирование:
В любом случае, код работает отлично. Ещё раз спасибо!