플러그인에서 라우트를 커스터마이즈하고 커스텀 페이지를 렌더링하는 방법이 무엇인가요?
이 게시물: Discourse 플러그인 개발 - 5부 - 관리자 인터페이스 추가 - 문서 / 개발자 가이드 - Discourse Meta 및 다른 플러그인들을 참고했지만, 모두 실패했습니다.
커스터마이즈한 라우트들은 모두 JSON 데이터를 반환하는데, 저는 Ember 템플릿을 렌더링하고 싶습니다. 이 주제를 설명하는 게시물이 있을까요? 감사합니다.
플러그인에서 라우트를 커스터마이즈하고 커스텀 페이지를 렌더링하는 방법이 무엇인가요?
이 게시물: Discourse 플러그인 개발 - 5부 - 관리자 인터페이스 추가 - 문서 / 개발자 가이드 - Discourse Meta 및 다른 플러그인들을 참고했지만, 모두 실패했습니다.
커스터마이즈한 라우트들은 모두 JSON 데이터를 반환하는데, 저는 Ember 템플릿을 렌더링하고 싶습니다. 이 주제를 설명하는 게시물이 있을까요? 감사합니다.
그것이 전부라면 다음을 확인해 보세요:
그리고:
현재 여기서 막혀 있습니다. 구체적인 단계는 다음과 같습니다:
plugins/q/config/routes.rb 파일에서 라우트를 정의했습니다:
get “/hello” => “examples#hello”
컨트롤러: plugins/q/app/controllers/quectel/examples_controller.rb
def hello
render json: { hello: "world" }
end
이제 localhost:4200/q/hello에 접근하면 JSON이 반환됩니다.
{"hello":"world"}
localhost:4200/q/hello에 접근할 때 Ember 템플릿을 렌더링하려면 어떻게 해야 하나요?
일전에 나중에 읽으려고 이 주제를 북마크해 두었습니다: Creating Routes in Discourse and Showing Data. 최신 정보가 맞지는 않을 수 있지만, 그래도 도움이 될 수도 있겠네요.
네, 이 게시물도 확인했고, 위의 단계대로 설치해 보았지만 작동하지 않았습니다. “페이지를 찾을 수 없습니다”라는 오류가 발생했습니다. 그래서 막막해졌습니다.
음, plugins/discourse-subscriptions 코드를 연구하면서 원하는 효과를 대략 구현했습니다.
/q/hello를 방문하면 사용자 정의 템플릿 내용이 표시되고, 사용자 정의 백엔드 데이터를 가져옵니다.
아래는 제 단계입니다:
plugins/quectel/assets/javascripts/discourse/quectel-route-map.js 생성export default function quectel() {
this.route("q/hello"); // 라우트 기본값은 /q/hello
};
plugins/quectel/assets/javascripts/discourse/routes/q/hello.js 생성import Route from "@ember/routing/route";
import { ajax } from "discourse/lib/ajax";
export default class HelloRoute extends Route {
model() {
return ajax('/q/hello') // 백엔드 API를 요청하여 데이터를 가져옵니다
}
}
plugins/quectel/assets/javascripts/discourse/templates/q/hello.gjs 생성 및 데이터 렌더링import QHello from '../../components/q-hello'
<template>
<h1>q-hello</h1>
{{!-- 컴포넌트 렌더링 --}}
<QHello />
{{!-- 모델 데이터 렌더링 --}}
<div>{{@model.hello}}</div>
</template>
plugins/quectel/app/controllers/quectel/examples_controller.rb 생성# frozen_string_literal: true
module ::Quectel
class ExamplesController < ::ApplicationController
requires_plugin PLUGIN_NAME
def hello
render json: { hello: "hello 2333" }
end
end
end
plugins/quectel/config/routes.rb# frozen_string_literal: true
Quectel::Engine.routes.draw do
get "/hello" => "examples#hello"
end
Discourse::Application.routes.draw { mount ::Quectel::Engine, at: "q" }
/q/hello를 방문하면 다음과 같은 화면이 표시됩니다: