أحاول حقن الاسم الكامل للمستخدم في قالب Handlebars للموضوع المميز. لا أواجه مشكلة في إدخال قيمة تجريبية في القالب، لكنني لا أستطيع الحصول على القيمة التي أريدها. في الكود أدناه، أود مثلاً أن يُرجع realname الاسم الكامل للمستخدم بدلاً من “Test”:
<script type="text/discourse-plugin" version="0.8">
var FeaturedTopicView = require('discourse/components/featured-topic').default;
FeaturedTopicView.reopen({
fullName: function() {
// Get the username of the last poster
let username = this.topic.last_poster.username;
// Try to get the full name of the user with the username we established above
let realname = Discourse.User.findByUsername(username).then(function(result) {
return result.name;
}).then(function(result) {
// This gives us the real names! But it's inaccessible outside of here
console.log(result);
});
return "Test";
}.property()
});
</script>
المستخدم الذي أهتم به هو آخر ناشر، لذا يبدو في هذه الحالة أن كل ما لدي للعمل عليه هو this.topic.last_poster. هذا يحتوي على ثلاث قيم مرتبطة به: username، id، و avatar_template. للأسف، ما أحتاجه حقًا هو name.
كنت آمل وجود طريقة تسمح لي بالبحث عن الاسم الكامل للمستخدم باستخدام id أو username. لستُ على دراية كبيرة بمفهوم الـ Promises وكيفية استخدامها، لكنني نجحت إلى حد ما في إثبات الفكرة باستخدام Discourse.User.findByUsername(username). يمكنني طباعة الأسماء الكاملة التي أحتاجها بنجاح عبر console.log، لكنها تبدو محبوسة داخل هذا النطاق.
قد أكون أقوم بهذا الأمر بشكل خاطئ، لكن هذا كان أفضل جهد بذلته بناءً على معرفتي الحالية.
أي مساعدة أو اقتراحات ستكون موضع تقدير كبير! يرجى إخباري إذا كنت بحاجة إلى توضيح أي شيء آخر.