templates/registration/register.html.twig line 16
{% extends 'base.html.twig' %}{% import "macros/form-input.html.twig" as inputMacro %}{% import 'macros/doc-upload.html.twig' as docUpload %}{% block title %}Register{% endblock %}{% block body %}<div class="w-full max-w-screen-2xl py-16 mx-auto px-6"><h1 class="md:text-4xl text-3xl font-bold text-gray-800 text-center">Membership Application Form</h1><p class="text-lg text-gray-800 text-center my-5">Please fill up the form below to apply for membership.</p><div class="w-full max-w-lg mx-auto my-5 py-5">{{ form_start(registrationForm, { 'attr': {'autocomplete': 'off','id':'js-registration_form'}}) }}<div class="w-full flex flex-col gap-4"><h3 class="text-base text-gray-800 font-semibold mb-2">Gender</h3><div class="grid lg:grid-cols-3 gap-3"><div class="lg:col-span-2"><div class="w-full flex md:flex-row flex-col md:items-center mb-4 gap-3"><div class="inline-flex items-center gap-x-2"><inputid="male"name="{{ field_name(registrationForm.gender) }}"value="M"type="radio"class="inline-blockw-4h-4roundedaccent-brandborder-brandfocus:ring-0active:ring-0"required><labelfor="male"class="grow ml-2 font-normal text-gray-700 cursor-pointer text-base">Male</label></div><div class="inline-flex items-center gap-x-2"><inputid="female"name="{{ field_name(registrationForm.gender) }}"value="F"type="radio"class="inline-blockw-4h-4roundedaccent-brandborder-brandfocus:ring-0active:ring-0"required><labelfor="female"class="grow ml-2 font-normal text-gray-700 cursor-pointer text-base">Female</label></div><div class="inline-flex items-center gap-x-2"><inputid="other"name="{{ field_name(registrationForm.gender) }}"value="O"type="radio"class="inline-blockw-4h-4roundedaccent-brandborder-brandfocus:ring-0active:ring-0"required><labelfor="other"class="grow ml-2 font-normal text-gray-700 cursor-pointer text-base">Other</label></div></div>{{ inputMacro.input(field_name(registrationForm.email),field_value(registrationForm.email),field_label(registrationForm.email),'email',true,true,false,'email')}}{{ inputMacro.input(field_name(registrationForm.phoneNo),field_value(registrationForm.phoneNo),'Phone No.','tel',true,false,false,'phone')}}</div><div class="lg:col-span-1 flex lg:justify-end">{{ form_start(uploadForm,{'attr': {'id': 'profile-image'}})}}<div class="w-36 h-36 rounded-lg bg-gray-100 relative overflow-hidden"><div class="profile-img-result absolute w-full h-full bg-gray-100 inline-flex items-center justify-center"><svg xmlns="http://www.w3.org/2000/svg" class="w-8 h-8 fill-gray-400" viewBox="0 0 24 24"><path d="M19,4h-.508L16.308,1.168A3.023,3.023,0,0,0,13.932,0H10.068A3.023,3.023,0,0,0,7.692,1.168L5.508,4H5A5.006,5.006,0,0,0,0,9V19a5.006,5.006,0,0,0,5,5H19a5.006,5.006,0,0,0,5-5V9A5.006,5.006,0,0,0,19,4ZM9.276,2.39A1.006,1.006,0,0,1,10.068,2h3.864a1.008,1.008,0,0,1,.792.39L15.966,4H8.034ZM22,19a3,3,0,0,1-3,3H5a3,3,0,0,1-3-3V9A3,3,0,0,1,5,6H19a3,3,0,0,1,3,3Z"/><path d="M12,8a6,6,0,1,0,6,6A6.006,6.006,0,0,0,12,8Zm0,10a4,4,0,1,1,4-4A4,4,0,0,1,12,18Z"/></svg></div><div class="relative opacity-0 w-full h-full"><input type="file" id="profile-image-input" name="{{ field_name(uploadForm.media) }}" accept=".png,.jpg,.jpeg" class="block opacity-0 w-full h-full cursor-pointer py-2" /></div><div class="absolute w-full py-1.5 text-xs text-center bottom-0 bg-black text-white">Upload</div></div>{{ form_end(uploadForm) }}</div></div><div class="grid lg:grid-cols-2 gap-3"><div class="lg:col-span-1">{{ inputMacro.input(field_name(registrationForm.firstName),field_value(registrationForm.firstName),field_label(registrationForm.firstName),'text',true,false,false,'fname')}}</div><div class="lg:col-span-1">{{ inputMacro.input(field_name(registrationForm.lastName),field_value(registrationForm.lastName),field_label(registrationForm.lastName),'text',true,false,false,'lname')}}</div></div><div class="grid lg:grid-cols-3 gap-3"><div class="lg:col-span-1">{{ inputMacro.input(field_name(registrationForm.houseNumber),field_value(registrationForm.houseNumber),'House Number','text',true,false,false,'houseNumber')}}</div><div class="lg:col-span-1">{{ inputMacro.input(field_name(registrationForm.street),field_value(registrationForm.street),'Street','text',true,false,false,'street')}}</div><div class="lg:col-span-1">{{ inputMacro.input(field_name(registrationForm.postCode),field_value(registrationForm.postCode),'postCode','text',true,false,false,'postCode')}}</div></div>{{ inputMacro.input(field_name(registrationForm.plainPassword),field_value(registrationForm.plainPassword),'Password','password',true,false,false,'password')}}<div class="w-full flex items-center mt-4 mb-8"><inputid="agree"name="{{ field_name(registrationForm.agreeTerms) }}"value="{{ field_value(registrationForm.agreeTerms) }}"type="checkbox"class="inline-blockw-4h-4roundedaccent-brandborder-brandfocus:ring-0active:ring-0"required><labelfor="agree"class="grow ml-2 font-normal text-gray-700 cursor-pointer text-base">Agree</label></div><input type="hidden" name="imageType" value="LG"><input type="hidden" name="imageMetadata" class="metadata-profile"><div class="w-full text-center mt-4"><buttontype="submit"class="nextrounded-fullbg-transparentborderborder-brandpx-12py-3inline-flexitems-centerjustify-centertext-basegroupfont-semiboldtransition-allduration-500relativeoverflow-hiddenafter:content=['']after:w-0after:h-fullafter:absoluteafter:blockafter:inset-0hover:after:w-fullafter:transition-allafter:duration-500after:bg-brandafter:text-white"><span class="z-10 group-hover:text-white text-brand transition-all duration-700">Submit</span></button></div></div>{{ form_end(registrationForm) }}</div></div><script>function registerUser(){const registrationForm = document.querySelector('#js-registration_form');const registrationFormData = new FormData(registrationForm);$.ajax({url: '{{ path('app_register') }}',method: 'POST',data: registrationFormData,processData: false,contentType: false,success: function(r) {const response = JSON.parse(r)if (response.status =='success'){console.log(response)} else {return displayToast(response.message, 'error', 3000)}},error: function (e) {const error = JSON.parse(e)return displayToast(error.message, 'error', 3000)}});}document.getElementById("profile-image-input").onchange = function(){const uploadedImage = URL.createObjectURL(this.files[0])const formData = new FormData()formData.append('mediaType', 'LG')formData.append('upload_form[media]', this.files[0], this.files[0].name)formData.append('upload_form[_token]', $('#upload_form__token').val())$('.profile-img-result').html(`<img src="${uploadedImage}" class="w-full h-full object-cover object-center">`)$.ajax({url: '{{ path('image_upload_post') }}',method: 'POST',data: formData,processData: false,contentType: false,success: function(r) {const response = JSON.parse(r)$('.metadata-profile').val(response.imageMetadataUid)},error: function (e) {const error = JSON.parse(e)return displayToast(error.message, 'error', 3000)}})}</script>{% endblock %}