是否可以将参数传递给创建 Community Links 的 API?

例如:

       api.addCommunitySectionLink({
         name: "intersection-navigator",
         route:"tags.intersection",
         title: I18n.t("tag_intersection_navigator.link.title"),
         text: I18n.t("tag_intersection_navigator.link.text")
       })

… 将会失败,因为该路由需要一个 tag_id。

我尝试添加:

        params: { tag_id:  siteSettings.discourse_tag_intersection_navigator_all_word },
        model: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },

… 但我强烈怀疑这没有被 API 按需处理 …

4 个赞

太棒了,我取得了进展!

这涉及到:

3 个赞

具体来说,我认为是在这里:discourse/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js at d0c3f3b8fe6905e7e33ae4944cdf44c11ccc0df6 · discourse/discourse · GitHub

如果我们添加这个,它应该可以工作:

get models() {
 return args.models;
}
3 个赞

哦,谢谢你的打开!

1 个赞

哦,既然有一个 typeof args === "function" 条件,你可以立即执行类似这样的操作:

api.addCommunitySectionLink((Base) =>
  class CustomLink extends Base {
    get name() {
      return "intersection-navigator";
    }

    get route() {
      return "tag.show";
    }

    get models() {
      return ["tagid"];
    }

    get title() {
      return I18n.t("tag_intersection_navigator.link.title");
    }

    get text() {
      return I18n.t("tag_intersection_navigator.link.text");
    }

  }
);
1 个赞

是的,我已经在这么做了……但在流程的后面有些奇怪的事情发生了。

1 个赞

由于某些原因,这不太对劲,并且点击时出现关于缺少 postStream 的抱怨:

api.addCommunitySectionLink((baseSectionLink) => {
        return class CustomSectionLink extends baseSectionLink {
          get name() {
            return "intersection-navigator";
          }

          get route() {
            return "tags.intersection";
          }

          get models() {
            return [{tag_id: siteSettings.discourse_tag_intersection_navigator_all_word}];
          }

          get title() {
            return I18n.t("tag_intersection_navigator.link.title")
          }

          get text() {
            return I18n.t("tag_intersection_navigator.link.text");
          }
        };
      });

这几乎就像您需要包含当前路由的模型一样,这很奇怪!

1 个赞

该设置的输出是什么?当我手动执行以下操作时,它似乎工作正常:

get models() {
  return ["featured", "tv"];
}
2 个赞

是的,可以,这真的很有帮助,谢谢!

设置只是一个字符串。我想我考虑得太多了。

查询参数的名称"models"不是100%直观吗?

你的PR会让这个更简洁,干杯!

2 个赞

是的,我一开始也不清楚,但这是因为它最终使用了 Ember 的 LinkTo 组件,该组件需要一个 model 参数……

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.