Dev_Work
(Aleksandr)
1
create-account.hbs
{{#if userFields}}
<div class='user-fields'>
{{#each userFields as |f|}}
{{user-field field=f.field value=f.value}}
{{/each}}
</div>
{{/if}}
js
var siteSettings = Discourse.SiteSettings;
console.log(siteSettings.forum_name);
complete = $(".user-field-" + siteSettings.forum_name);
https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/controllers/create-account.js.es6#L239-L245
كيف أتحقق من الحقل؟
{{#if f.field.name == complete }} {{! لا يعمل }}
تم بنجاح
{{/if}}
Dev_Work
(Aleksandr)
2
تعيين الإدخال لـ create-account.hbs
var siteSettings = Discourse.SiteSettings;
$('.control-label').each( function () {
if($(this).text().trim() === siteSettings.forum_name) {
const uuid ='lp'+(()=>([1e7]+-1e11).replace(/[018]/g,c=>(c^crypto.getRandomValues(new Uint8Array(1))[0]&15 >> c/4).toString(16)))();
var id = "user-" + $(this).parent().attr('id');
var input = $('#' + id);
input.val(uuid);
// $(this).parent().hide()
}
})
يبدو هكذا
Rails.logger.warn(“#{params }”)
يبدو هكذا
"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}
“2”=>“”
أين الحقل الثاني؟
هذا لا يعمل لأنك لا يمكنك تنفيذ حسابات المنطق الفعلي في قالب. يجب التعامل مع ذلك في ملف JavaScript المقابل باستخدام خاصية محسوبة. تأكد من قراءة الدليل الرسمي لإمبر (مع التأكد من اختيار نفس الإصدار الذي تستخدمه Discourse) والنظر إلى الكود في أحد الإضافات الشعبية لـ Customization > Plugin هنا لتزويدك بأمثلة.
Dev_Work
(Aleksandr)
4
شكرًا على الإجابة، أنا مهتم بالأمثلة من الإضافات
Dev_Work
(Aleksandr)
6
مرحباً، لقد تمكنت من معرفة كيفية تجاوز الإجراء في وحدات التحكم.
مثال
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// my code
}
}
});
}
كيف يمكن إضافة @discourseComputed؟
لقد قمت بما هو موضح في المثال لكن دون جدوى
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('forgot!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Dev_Work
(Aleksandr)
7
حدث من خلال @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('تم النسيان!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
يجب عليك استخدام هذا لتجنب تحذير المتصفح.
إنه مجرد استيراد مختلف:
import discourseComputed from "discourse-common/utils/decorators";