Comment accéder aux champs personnalisés de catégorie dans les plugins

Pour commencer, ceci concerne un plugin qui doit connaître les custom_fields d’une catégorie pour créer un bouton dans le point d’extension before-create-topic. J’ai également besoin d’utiliser cela dans le connecteur after-topic-footer-main-buttons.

Il me manque probablement quelque chose d’extrêmement simple ici…

Je peux utiliser ce qui suit dans l’initialiseur pour obtenir la classe de la catégorie… en quelque sorte :

const controller = api.container.lookup("controller:navigation/category");

Lorsque j’imprime cela, je peux voir diverses propriétés. Dans la console de développement, je vois category: (...). Lorsque je clique sur (..), je peux voir custom_fields et le champ que je recherche. Comment puis-je accéder à cela via l’API du plugin ??

J’ai essayé diverses formes de « récupération » de la propriété, mais tout retourne undefined.

Vous pourriez faire un pas en arrière et expliquer ce que vous essayez de faire. En général, les données dont vous avez besoin sont déjà disponibles. Sinon, vous pouvez utiliser Ajax pour les récupérer dans un thème, ou les ajouter au sérialiseur dans un plugin.

J’essaie de récupérer un champ personnalisé depuis ma catégorie. Désolé, ce n’était pas clair avant. J’ai mis à jour le message original avec plus d’informations.

1 « J'aime »

C’est plus d’informations que ce que je comprenais auparavant… Quelque chose comme ceci dans plugin.rb :

  add_to_serializer(:category, :your_plugin) do
    some_stuff
  end

Cependant, je pense que ce que vous voulez faire, c’est chercher d’autres plugins susceptibles d’ajouter des éléments au sérialiseur. Je pense que Topic Ratings Plugin ou Topic List Previews (legacy) devraient être de bons exemples à examiner, et j’espère que ce sera « évident » (mais seulement après avoir passé des heures à faire plein d’autres choses « évidentes », si vous êtes comme moi).

La variable a déjà été ajoutée au sérialiseur. J’essaie d’y accéder depuis JS. Je pensais pouvoir la récupérer via la variable controller mentionnée dans mon message initial, mais je ne comprends pas comment y accéder.

1 « J'aime »