Magento 2 - Add additional attributes in register Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Magento Custom Register Page - Redirect IssueProduct Attributes - Add Additional Label to OptionsRetrieve custom attribute value in magento 2Login with phone number or email address - Magento 1.9Register form fieldcustom customer attributes are not shown at checkout register in Magento 2how to add an additional field in the client panel / during registrationMagento 2 : Display custom field (customer attribute) in “checkout register” formAdd telephone filed in register pageHow add Billing address and shipping address section to customer register page in magento 2

Hide attachment record without code

Pointing to problems without suggesting solutions

Why does BitLocker not use RSA?

How to achieve cat-like agility?

As a dual citizen, my US passport will expire one day after traveling to the US. Will this work?

Found this skink in my tomato plant bucket. Is he trapped? Or could he leave if he wanted?

An isoperimetric-type inequality inside a cube

Can I cut the hair of a conjured korred with a blade made of precious material to harvest that material from the korred?

Is it OK if I do not take the receipt in Germany?

How do I find my Spellcasting Ability for my D&D character?

How many time has Arya actually used Needle?

Marquee sign letters

Proving that any solution to the differential equation of an oscillator can be written as a sum of sinusoids.

Can one Knight really make another one a Knight?

Vertical ranges of Column Plots in 12

The Nth Gryphon Number

Is there a verb for listening stealthily?

What does 丫 mean? 丫是什么意思?

How to resize main filesystem

3D Masyu - A Die

Why is there so little support for joining EFTA in the British parliament?

Weaponising the Grasp-at-a-Distance spell

First Component in PCA

How to ask rejected full-time candidates to apply to teach individual courses?



Magento 2 - Add additional attributes in register



Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)
Announcing the arrival of Valued Associate #679: Cesar Manara
Unicorn Meta Zoo #1: Why another podcast?Magento Custom Register Page - Redirect IssueProduct Attributes - Add Additional Label to OptionsRetrieve custom attribute value in magento 2Login with phone number or email address - Magento 1.9Register form fieldcustom customer attributes are not shown at checkout register in Magento 2how to add an additional field in the client panel / during registrationMagento 2 : Display custom field (customer attribute) in “checkout register” formAdd telephone filed in register pageHow add Billing address and shipping address section to customer register page in magento 2



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








1















I am using Magento 2 EE.



I want to call phone number attribute in customer register form.



To do this I just created a custom customer attribute from




Store -> Attributes -> Customer




But it is not appearing on frontend signup form. How can I show this attribute on form?










share|improve this question






























    1















    I am using Magento 2 EE.



    I want to call phone number attribute in customer register form.



    To do this I just created a custom customer attribute from




    Store -> Attributes -> Customer




    But it is not appearing on frontend signup form. How can I show this attribute on form?










    share|improve this question


























      1












      1








      1








      I am using Magento 2 EE.



      I want to call phone number attribute in customer register form.



      To do this I just created a custom customer attribute from




      Store -> Attributes -> Customer




      But it is not appearing on frontend signup form. How can I show this attribute on form?










      share|improve this question
















      I am using Magento 2 EE.



      I want to call phone number attribute in customer register form.



      To do this I just created a custom customer attribute from




      Store -> Attributes -> Customer




      But it is not appearing on frontend signup form. How can I show this attribute on form?







      magento2 attributes register magento-enterprise-2






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited 33 mins ago









      Aaditya

      4,41121139




      4,41121139










      asked 43 mins ago









      Muhammad AnasMuhammad Anas

      7651321




      7651321




















          2 Answers
          2






          active

          oldest

          votes


















          1














          I am using Magento Enterprise Edition 2.2.4, You need to make YES for Show on Storefront and assign values for Forms to Use In



          enter image description here






          share|improve this answer


















          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            22 mins ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            20 mins ago


















          1














          Step 1: Create field (customer attribute) using InstallData.php



          <?php
          namespace <vendor_name><module>Setup;

          use MagentoFrameworkModuleSetupMigration;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          /**
          * @codeCoverageIgnore
          */
          class InstallData implements InstallDataInterface

          /**
          * Customer setup factory
          *
          * @var MagentoCustomerSetupCustomerSetupFactory
          */
          private $customerSetupFactory;

          /**
          * Init
          *
          * @param MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory
          */
          public function __construct(MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory)

          $this->customerSetupFactory = $customerSetupFactory;


          /**
          * @inheritdoc
          * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
          */
          public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          /** @var CustomerSetup $customerSetup */
          $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

          $setup->startSetup();

          $customerSetup->addAttribute(MagentoCustomerModelCustomer::ENTITY, 'profile_name', [
          'type' => 'text',
          'label' => 'Profile Name',
          'input' => 'text',
          'required' => 0,
          'sort_order' => 110,
          'visible' => 1,
          'system' => 0,
          'position' => 110
          ]);
          //add attribute to attribute set
          $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'profile_name');
          $attribute->setData('used_in_forms', ['adminhtml_customer', 'customer_account_create', 'customer_account_edit']);
          $attribute->save();

          $setup->endSetup();




          Step 2: override form/register.phtml using layout customer_account_create.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <body>
          <referenceBlock name="customer_form_register">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><Vendor>_<module>::form/register.phtml</argument>
          </action>
          </referenceBlock>
          </body>
          </page>


          Step 3: register.phtml



          <?php $_helper = $this->helper('<vendor><module>HelperData'); ?>
          <?php echo $block->getChildHtml('form_fields_before')?>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.extra')?>
          <form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off">
          <fieldset class="fieldset create info">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Personal Information') ?></span></legend><br>
          <input type="hidden" name="success_url" value="<?php /* @escapeNotVerified */ echo $block->getSuccessUrl() ?>">
          <input type="hidden" name="error_url" value="<?php /* @escapeNotVerified */ echo $block->getErrorUrl() ?>">
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
          <?php if ($block->isNewsletterEnabled()): ?>
          <div class="field choice newsletter">
          <input type="checkbox" name="is_subscribed" title="<?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?>" value="1" id="is_subscribed"<?php if ($block->getFormData()->getIsSubscribed()): ?> checked="checked"<?php endif; ?> class="checkbox">
          <label for="is_subscribed" class="label"><span><?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?></span></label>
          </div>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.newsletter')?>
          <?php endif ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getFormData()->getDob())->toHtml() ?>
          <?php endif ?>

          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getFormData()->getTaxvat())->toHtml() ?>
          <?php endif ?>

          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getFormData()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom code for Profile-Name Field -->
          <div class="field profile-name">
          <label for="profile-name" class="label"><span><?php /* @escapeNotVerified */ echo __('Profile Name') ?></span></label>
          <div class="control">
          <input type="text" name="profile_name" id="profile-name" value="<?php echo $block->escapeHtml($block->getFormData()->getData('profile_name')) ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-text" maxlength="250">
          </div>
          </div>
          <!-- End -->

          </fieldset>
          <?php if ($block->getShowAddressFields()): ?>
          <fieldset class="fieldset address">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Address Information') ?></span></legend><br>
          <input type="hidden" name="create_address" value="1" />
          <div class="field company">
          <label for="company" class="label"><span><?php /* @escapeNotVerified */ echo __('Company') ?></span></label>
          <div class="control">
          <input type="text" name="company" id="company" value="<?php echo $block->escapeHtml($block->getFormData()->getCompany()) ?>" title="<?php /* @escapeNotVerified */ echo __('Company') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('company') ?>">
          </div>
          </div>
          <div class="field telephone">
          <label for="telephone" class="label"><span><?php /* @escapeNotVerified */ echo __('Phone Number') ?></span></label>
          <div class="control">
          <input type="text" name="telephone" id="telephone" value="<?php echo $block->escapeHtml($block->getFormData()->getTelephone()) ?>" title="<?php /* @escapeNotVerified */ echo __('Phone Number') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('telephone') ?>">
          </div>
          </div>

          <?php $_streetValidationClass = $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('street'); ?>

          <div class="field street required">
          <label for="street_1" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreet(0)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address') ?>" id="street_1" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          <div class="nested">
          <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
          <?php for ($_i = 2, $_n = $this->helper('MagentoCustomerHelperAddress')->getStreetLines(); $_i <= $_n; $_i++): ?>
          <div class="field additional">
          <label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
          <span><?php /* @escapeNotVerified */ echo __('Address') ?></span>
          </label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreetLine($_i - 1)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address %1', $_i) ?>" id="street_<?php /* @escapeNotVerified */ echo $_i ?>" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          </div>
          </div>
          <?php endfor; ?>
          </div>
          </div>
          </div>

          <div class="field required">
          <label for="city" class="label"><span><?php /* @escapeNotVerified */ echo __('City') ?></span></label>
          <div class="control">
          <input type="text" name="city" value="<?php echo $block->escapeHtml($block->getFormData()->getCity()) ?>" title="<?php /* @escapeNotVerified */ echo __('City') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('city') ?>" id="city">
          </div>
          </div>

          <div class="field region required">
          <label for="region_id" class="label"><span><?php /* @escapeNotVerified */ echo __('State/Province') ?></span></label>
          <div class="control">
          <select id="region_id" name="region_id" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="validate-select" style="display:none;">
          <option value=""><?php /* @escapeNotVerified */ echo __('Please select a region, state or province.') ?></option>
          </select>
          <input type="text" id="region" name="region" value="<?php echo $block->escapeHtml($block->getRegion()) ?>" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('region') ?>" style="display:none;">
          </div>
          </div>

          <div class="field zip required">
          <label for="zip" class="label"><span><?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?></span></label>
          <div class="control">
          <input type="text" name="postcode" value="<?php echo $block->escapeHtml($block->getFormData()->getPostcode()) ?>" title="<?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('postcode') ?>">
          </div>
          </div>

          <div class="field country required">
          <label for="country" class="label"><span><?php /* @escapeNotVerified */ echo __('Country') ?></span></label>
          <div class="control">
          <?php echo $block->getCountryHtmlSelect() ?>
          </div>
          </div>
          <?php $addressAttributes = $block->getChildBlock('customer_form_address_user_attributes');?>
          <?php if ($addressAttributes): ?>
          <?php $addressAttributes->setEntityType('customer_address'); ?>
          <?php $addressAttributes->setFieldIdFormat('address:%1$s')->setFieldNameFormat('address[%1$s]');?>
          <?php $block->restoreSessionData($addressAttributes->getMetadataForm(), 'address');?>
          <?php echo $addressAttributes->setShowContainer(false)->toHtml()?>
          <?php endif;?>
          <input type="hidden" name="default_billing" value="1">
          <input type="hidden" name="default_shipping" value="1">
          </fieldset>

          <?php endif; ?>
          <fieldset class="fieldset create account" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Sign-in Information') ?></span></legend><br>
          <div class="field required">
          <label for="email_address" class="label"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" autocomplete="email" id="email_address" value="<?php echo $block->escapeHtml($block->getFormData()->getEmail()) ?>" title="<?php /* @escapeNotVerified */ echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true">
          </div>
          </div>
          <div class="field password required" data-mage-init='"passwordStrengthIndicator": '>
          <label for="password" class="label"><span><?php /* @escapeNotVerified */ echo __('Password') ?></span></label>
          <div class="control">
          <input type="password" name="password" id="password"
          title="<?php /* @escapeNotVerified */ echo __('Password') ?>"
          class="input-text"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off">
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php /* @escapeNotVerified */ echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php /* @escapeNotVerified */ echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>

          </div>
          <div class="field confirmation required">
          <label for="password-confirmation" class="label"><span><?php /* @escapeNotVerified */ echo __('Confirm Password') ?></span></label>
          <div class="control">
          <input type="password" name="password_confirmation" title="<?php /* @escapeNotVerified */ echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="required:true, equalTo:'#password'" autocomplete="off">
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action submit primary" title="<?php /* @escapeNotVerified */ echo __('Create an Account') ?>"><span><?php /* @escapeNotVerified */ echo __('Create an Account') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php /* @escapeNotVerified */ echo __('Back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          'jquery',
          'mage/mage'
          ], function($)

          var dataForm = $('#form-validate');
          var ignore = <?php /* @escapeNotVerified */ echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          ).find('input:text').attr('autocomplete', 'off');

          );
          </script>
          <?php if ($block->getShowAddressFields()): ?>
          <script type="text/x-magento-init">

          "#country":
          "regionUpdater":
          "optionalRegionAllowed": <?php /* @escapeNotVerified */ echo($block->getConfig('general/region/display_all') ? 'true' : 'false'); ?>,
          "regionListId": "#region_id",
          "regionInputId": "#region",
          "postcodeId": "#zip",
          "form": "#form-validate",
          "regionJson": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getRegionJson() ?>,
          "defaultRegion": "<?php /* @escapeNotVerified */ echo $block->getFormData()->getRegionId() ?>",
          "countriesWithOptionalZip": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getCountriesWithOptionalZip(true) ?>



          </script>
          <?php endif; ?>


          Step 4: Override edit.phtml file using customer_account_edit.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <update handle="customer_account"/>
          <body>
          <!-- Set Custom Template for Register form -->
          <referenceBlock name="customer_edit">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><vendor>_<Module>::form/edit.phtml</argument>
          </action>
          </referenceBlock>
          <!-- End -->
          </body>
          </page>


          Step 5: form/edit.phtml



          <?php $_helper = $this->helper('<Vendor><Module>HelperData'); ?>
          <form class="form form-edit-account" action="<?php /* @escapeNotVerified */ echo $block->getUrl('customer/account/editPost') ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>" autocomplete="off">
          <fieldset class="fieldset info">
          <?php echo $block->getBlockHtml('formkey')?>
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Account Information') ?></span></legend><br>
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getCustomer())->toHtml() ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
          <?php endif ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getCustomer()->getTaxvat())->toHtml() ?>
          <?php endif ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getCustomer()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom Code For Profile-Name Field -->
          <div class="field" data-container="profile-name">
          <?php $linkedinProfile = $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'profile_name')); ?>
          <label class="label" for="profile-name">
          <span>
          <?php /* @escapeNotVerified */ echo __('Profile Name') ?>
          </span>
          </label>
          <div class="control">
          <input type="text" name="profile_name" id="linkedin-profile" data-input="linkedin-profile" value="<?php echo $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'linkedin_profile')); ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-file"/>
          </div>
          </div>
          <!-- End -->
          <div class="field choice">
          <input type="checkbox" name="change_email" id="change-email" data-role="change-email" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Email') ?>" class="checkbox" />
          <label class="label" for="change-email"><span><?php /* @escapeNotVerified */ echo __('Change Email') ?></span></label>
          </div>
          <div class="field choice">
          <input type="checkbox" name="change_password" id="change-password" data-role="change-password" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Password') ?>"<?php if ($block->getChangePassword()): ?> checked="checked"<?php endif; ?> class="checkbox" />
          <label class="label" for="change-password"><span><?php /* @escapeNotVerified */ echo __('Change Password') ?></span></label>
          </div>
          </fieldset>

          <fieldset class="fieldset password" data-container="change-email-password">
          <legend class="legend"><span data-title="change-email-password"><?php echo __('Change Email and Password') ?></span></legend><br>
          <div class="field email required" data-container="change-email">
          <label class="label" for="email"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" id="email" autocomplete="email" data-input="change-email" value="<?php echo $block->escapeHtml($block->getCustomer()->getEmail()) ?>" title="<?php echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true" />
          </div>
          </div>
          <div class="field password current required">
          <label class="label" for="current-password"><span><?php echo __('Current Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="current_password" id="current-password" data-input="current-password" autocomplete="off" />
          </div>
          </div>
          <div class="field new password required" data-container="new-password" data-mage-init='"passwordStrengthIndicator": '>
          <label class="label" for="password"><span><?php /* @escapeNotVerified */ echo __('New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password" id="password"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-input="new-password"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off" />
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>
          </div>
          <div class="field confirm password required" data-container="confirm-password">
          <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password_confirmation" id="password-confirmation"
          data-input="confirm-password"
          autocomplete="off" />
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action save primary" title="<?php echo __('Save') ?>"><span><?php echo __('Save') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php echo __('Go back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          "jquery",
          "mage/mage"
          ], function($)
          var dataForm = $('#form-validate');
          var ignore = <?php echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          );
          );
          </script>
          <script type="text/x-magento-init">

          "[data-role=change-email], [data-role=change-password]":
          "changeEmailPassword":
          "titleChangeEmail": "<?php echo __('Change Email') ?>",
          "titleChangePassword": "<?php echo __('Change Password') ?>",
          "titleChangeEmailAndPassword": "<?php echo __('Change Email and Password') ?>"



          </script>


          Step 6: helper/data.php



          <?php

          namespace <Vendor><Module>Helper;

          use MagentoFrameworkObjectManagerInterface;
          use MagentoFrameworkAppActionAction;

          class Data extends MagentoFrameworkAppHelperAbstractHelper

          protected $_customerFactory;

          protected $objectManager;

          /**
          * Initialize dependencies.
          *
          * @param MagentoFrameworkAppHelperContext $context
          * @param MagentoCustomerModelCustomerFactory $customerFactory
          */
          public function __construct(
          MagentoFrameworkAppHelperContext $context,
          MagentoCustomerModelCustomerFactory $customerFactory,
          ObjectManagerInterface $objectManager
          )
          $this->_customerFactory = $customerFactory;
          $this->objectManager = $objectManager;
          parent::__construct($context);


          /**
          * @inheritdoc
          */
          public function getCustomerAttributeValue($customerId, $attributeCode)

          $customerObject = $this->_customerFactory->create()->load($customerId);
          return $attribute = ($customerObject->getData($attributeCode)) ? $customerObject->getData($attributeCode): false;







          share|improve this answer























          • Thanks for taking time answering my question. +1 for that

            – Muhammad Anas
            21 mins ago











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "479"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f270919%2fmagento-2-add-additional-attributes-in-register%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          I am using Magento Enterprise Edition 2.2.4, You need to make YES for Show on Storefront and assign values for Forms to Use In



          enter image description here






          share|improve this answer


















          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            22 mins ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            20 mins ago















          1














          I am using Magento Enterprise Edition 2.2.4, You need to make YES for Show on Storefront and assign values for Forms to Use In



          enter image description here






          share|improve this answer


















          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            22 mins ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            20 mins ago













          1












          1








          1







          I am using Magento Enterprise Edition 2.2.4, You need to make YES for Show on Storefront and assign values for Forms to Use In



          enter image description here






          share|improve this answer













          I am using Magento Enterprise Edition 2.2.4, You need to make YES for Show on Storefront and assign values for Forms to Use In



          enter image description here







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 36 mins ago









          AadityaAaditya

          4,41121139




          4,41121139







          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            22 mins ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            20 mins ago












          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            22 mins ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            20 mins ago







          1




          1





          Worked for me. Thanks :)

          – Muhammad Anas
          22 mins ago





          Worked for me. Thanks :)

          – Muhammad Anas
          22 mins ago




          1




          1





          :) Anytime, Happy coding!

          – Aaditya
          20 mins ago





          :) Anytime, Happy coding!

          – Aaditya
          20 mins ago













          1














          Step 1: Create field (customer attribute) using InstallData.php



          <?php
          namespace <vendor_name><module>Setup;

          use MagentoFrameworkModuleSetupMigration;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          /**
          * @codeCoverageIgnore
          */
          class InstallData implements InstallDataInterface

          /**
          * Customer setup factory
          *
          * @var MagentoCustomerSetupCustomerSetupFactory
          */
          private $customerSetupFactory;

          /**
          * Init
          *
          * @param MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory
          */
          public function __construct(MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory)

          $this->customerSetupFactory = $customerSetupFactory;


          /**
          * @inheritdoc
          * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
          */
          public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          /** @var CustomerSetup $customerSetup */
          $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

          $setup->startSetup();

          $customerSetup->addAttribute(MagentoCustomerModelCustomer::ENTITY, 'profile_name', [
          'type' => 'text',
          'label' => 'Profile Name',
          'input' => 'text',
          'required' => 0,
          'sort_order' => 110,
          'visible' => 1,
          'system' => 0,
          'position' => 110
          ]);
          //add attribute to attribute set
          $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'profile_name');
          $attribute->setData('used_in_forms', ['adminhtml_customer', 'customer_account_create', 'customer_account_edit']);
          $attribute->save();

          $setup->endSetup();




          Step 2: override form/register.phtml using layout customer_account_create.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <body>
          <referenceBlock name="customer_form_register">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><Vendor>_<module>::form/register.phtml</argument>
          </action>
          </referenceBlock>
          </body>
          </page>


          Step 3: register.phtml



          <?php $_helper = $this->helper('<vendor><module>HelperData'); ?>
          <?php echo $block->getChildHtml('form_fields_before')?>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.extra')?>
          <form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off">
          <fieldset class="fieldset create info">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Personal Information') ?></span></legend><br>
          <input type="hidden" name="success_url" value="<?php /* @escapeNotVerified */ echo $block->getSuccessUrl() ?>">
          <input type="hidden" name="error_url" value="<?php /* @escapeNotVerified */ echo $block->getErrorUrl() ?>">
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
          <?php if ($block->isNewsletterEnabled()): ?>
          <div class="field choice newsletter">
          <input type="checkbox" name="is_subscribed" title="<?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?>" value="1" id="is_subscribed"<?php if ($block->getFormData()->getIsSubscribed()): ?> checked="checked"<?php endif; ?> class="checkbox">
          <label for="is_subscribed" class="label"><span><?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?></span></label>
          </div>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.newsletter')?>
          <?php endif ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getFormData()->getDob())->toHtml() ?>
          <?php endif ?>

          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getFormData()->getTaxvat())->toHtml() ?>
          <?php endif ?>

          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getFormData()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom code for Profile-Name Field -->
          <div class="field profile-name">
          <label for="profile-name" class="label"><span><?php /* @escapeNotVerified */ echo __('Profile Name') ?></span></label>
          <div class="control">
          <input type="text" name="profile_name" id="profile-name" value="<?php echo $block->escapeHtml($block->getFormData()->getData('profile_name')) ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-text" maxlength="250">
          </div>
          </div>
          <!-- End -->

          </fieldset>
          <?php if ($block->getShowAddressFields()): ?>
          <fieldset class="fieldset address">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Address Information') ?></span></legend><br>
          <input type="hidden" name="create_address" value="1" />
          <div class="field company">
          <label for="company" class="label"><span><?php /* @escapeNotVerified */ echo __('Company') ?></span></label>
          <div class="control">
          <input type="text" name="company" id="company" value="<?php echo $block->escapeHtml($block->getFormData()->getCompany()) ?>" title="<?php /* @escapeNotVerified */ echo __('Company') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('company') ?>">
          </div>
          </div>
          <div class="field telephone">
          <label for="telephone" class="label"><span><?php /* @escapeNotVerified */ echo __('Phone Number') ?></span></label>
          <div class="control">
          <input type="text" name="telephone" id="telephone" value="<?php echo $block->escapeHtml($block->getFormData()->getTelephone()) ?>" title="<?php /* @escapeNotVerified */ echo __('Phone Number') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('telephone') ?>">
          </div>
          </div>

          <?php $_streetValidationClass = $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('street'); ?>

          <div class="field street required">
          <label for="street_1" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreet(0)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address') ?>" id="street_1" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          <div class="nested">
          <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
          <?php for ($_i = 2, $_n = $this->helper('MagentoCustomerHelperAddress')->getStreetLines(); $_i <= $_n; $_i++): ?>
          <div class="field additional">
          <label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
          <span><?php /* @escapeNotVerified */ echo __('Address') ?></span>
          </label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreetLine($_i - 1)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address %1', $_i) ?>" id="street_<?php /* @escapeNotVerified */ echo $_i ?>" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          </div>
          </div>
          <?php endfor; ?>
          </div>
          </div>
          </div>

          <div class="field required">
          <label for="city" class="label"><span><?php /* @escapeNotVerified */ echo __('City') ?></span></label>
          <div class="control">
          <input type="text" name="city" value="<?php echo $block->escapeHtml($block->getFormData()->getCity()) ?>" title="<?php /* @escapeNotVerified */ echo __('City') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('city') ?>" id="city">
          </div>
          </div>

          <div class="field region required">
          <label for="region_id" class="label"><span><?php /* @escapeNotVerified */ echo __('State/Province') ?></span></label>
          <div class="control">
          <select id="region_id" name="region_id" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="validate-select" style="display:none;">
          <option value=""><?php /* @escapeNotVerified */ echo __('Please select a region, state or province.') ?></option>
          </select>
          <input type="text" id="region" name="region" value="<?php echo $block->escapeHtml($block->getRegion()) ?>" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('region') ?>" style="display:none;">
          </div>
          </div>

          <div class="field zip required">
          <label for="zip" class="label"><span><?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?></span></label>
          <div class="control">
          <input type="text" name="postcode" value="<?php echo $block->escapeHtml($block->getFormData()->getPostcode()) ?>" title="<?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('postcode') ?>">
          </div>
          </div>

          <div class="field country required">
          <label for="country" class="label"><span><?php /* @escapeNotVerified */ echo __('Country') ?></span></label>
          <div class="control">
          <?php echo $block->getCountryHtmlSelect() ?>
          </div>
          </div>
          <?php $addressAttributes = $block->getChildBlock('customer_form_address_user_attributes');?>
          <?php if ($addressAttributes): ?>
          <?php $addressAttributes->setEntityType('customer_address'); ?>
          <?php $addressAttributes->setFieldIdFormat('address:%1$s')->setFieldNameFormat('address[%1$s]');?>
          <?php $block->restoreSessionData($addressAttributes->getMetadataForm(), 'address');?>
          <?php echo $addressAttributes->setShowContainer(false)->toHtml()?>
          <?php endif;?>
          <input type="hidden" name="default_billing" value="1">
          <input type="hidden" name="default_shipping" value="1">
          </fieldset>

          <?php endif; ?>
          <fieldset class="fieldset create account" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Sign-in Information') ?></span></legend><br>
          <div class="field required">
          <label for="email_address" class="label"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" autocomplete="email" id="email_address" value="<?php echo $block->escapeHtml($block->getFormData()->getEmail()) ?>" title="<?php /* @escapeNotVerified */ echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true">
          </div>
          </div>
          <div class="field password required" data-mage-init='"passwordStrengthIndicator": '>
          <label for="password" class="label"><span><?php /* @escapeNotVerified */ echo __('Password') ?></span></label>
          <div class="control">
          <input type="password" name="password" id="password"
          title="<?php /* @escapeNotVerified */ echo __('Password') ?>"
          class="input-text"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off">
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php /* @escapeNotVerified */ echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php /* @escapeNotVerified */ echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>

          </div>
          <div class="field confirmation required">
          <label for="password-confirmation" class="label"><span><?php /* @escapeNotVerified */ echo __('Confirm Password') ?></span></label>
          <div class="control">
          <input type="password" name="password_confirmation" title="<?php /* @escapeNotVerified */ echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="required:true, equalTo:'#password'" autocomplete="off">
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action submit primary" title="<?php /* @escapeNotVerified */ echo __('Create an Account') ?>"><span><?php /* @escapeNotVerified */ echo __('Create an Account') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php /* @escapeNotVerified */ echo __('Back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          'jquery',
          'mage/mage'
          ], function($)

          var dataForm = $('#form-validate');
          var ignore = <?php /* @escapeNotVerified */ echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          ).find('input:text').attr('autocomplete', 'off');

          );
          </script>
          <?php if ($block->getShowAddressFields()): ?>
          <script type="text/x-magento-init">

          "#country":
          "regionUpdater":
          "optionalRegionAllowed": <?php /* @escapeNotVerified */ echo($block->getConfig('general/region/display_all') ? 'true' : 'false'); ?>,
          "regionListId": "#region_id",
          "regionInputId": "#region",
          "postcodeId": "#zip",
          "form": "#form-validate",
          "regionJson": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getRegionJson() ?>,
          "defaultRegion": "<?php /* @escapeNotVerified */ echo $block->getFormData()->getRegionId() ?>",
          "countriesWithOptionalZip": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getCountriesWithOptionalZip(true) ?>



          </script>
          <?php endif; ?>


          Step 4: Override edit.phtml file using customer_account_edit.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <update handle="customer_account"/>
          <body>
          <!-- Set Custom Template for Register form -->
          <referenceBlock name="customer_edit">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><vendor>_<Module>::form/edit.phtml</argument>
          </action>
          </referenceBlock>
          <!-- End -->
          </body>
          </page>


          Step 5: form/edit.phtml



          <?php $_helper = $this->helper('<Vendor><Module>HelperData'); ?>
          <form class="form form-edit-account" action="<?php /* @escapeNotVerified */ echo $block->getUrl('customer/account/editPost') ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>" autocomplete="off">
          <fieldset class="fieldset info">
          <?php echo $block->getBlockHtml('formkey')?>
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Account Information') ?></span></legend><br>
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getCustomer())->toHtml() ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
          <?php endif ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getCustomer()->getTaxvat())->toHtml() ?>
          <?php endif ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getCustomer()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom Code For Profile-Name Field -->
          <div class="field" data-container="profile-name">
          <?php $linkedinProfile = $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'profile_name')); ?>
          <label class="label" for="profile-name">
          <span>
          <?php /* @escapeNotVerified */ echo __('Profile Name') ?>
          </span>
          </label>
          <div class="control">
          <input type="text" name="profile_name" id="linkedin-profile" data-input="linkedin-profile" value="<?php echo $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'linkedin_profile')); ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-file"/>
          </div>
          </div>
          <!-- End -->
          <div class="field choice">
          <input type="checkbox" name="change_email" id="change-email" data-role="change-email" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Email') ?>" class="checkbox" />
          <label class="label" for="change-email"><span><?php /* @escapeNotVerified */ echo __('Change Email') ?></span></label>
          </div>
          <div class="field choice">
          <input type="checkbox" name="change_password" id="change-password" data-role="change-password" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Password') ?>"<?php if ($block->getChangePassword()): ?> checked="checked"<?php endif; ?> class="checkbox" />
          <label class="label" for="change-password"><span><?php /* @escapeNotVerified */ echo __('Change Password') ?></span></label>
          </div>
          </fieldset>

          <fieldset class="fieldset password" data-container="change-email-password">
          <legend class="legend"><span data-title="change-email-password"><?php echo __('Change Email and Password') ?></span></legend><br>
          <div class="field email required" data-container="change-email">
          <label class="label" for="email"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" id="email" autocomplete="email" data-input="change-email" value="<?php echo $block->escapeHtml($block->getCustomer()->getEmail()) ?>" title="<?php echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true" />
          </div>
          </div>
          <div class="field password current required">
          <label class="label" for="current-password"><span><?php echo __('Current Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="current_password" id="current-password" data-input="current-password" autocomplete="off" />
          </div>
          </div>
          <div class="field new password required" data-container="new-password" data-mage-init='"passwordStrengthIndicator": '>
          <label class="label" for="password"><span><?php /* @escapeNotVerified */ echo __('New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password" id="password"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-input="new-password"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off" />
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>
          </div>
          <div class="field confirm password required" data-container="confirm-password">
          <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password_confirmation" id="password-confirmation"
          data-input="confirm-password"
          autocomplete="off" />
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action save primary" title="<?php echo __('Save') ?>"><span><?php echo __('Save') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php echo __('Go back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          "jquery",
          "mage/mage"
          ], function($)
          var dataForm = $('#form-validate');
          var ignore = <?php echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          );
          );
          </script>
          <script type="text/x-magento-init">

          "[data-role=change-email], [data-role=change-password]":
          "changeEmailPassword":
          "titleChangeEmail": "<?php echo __('Change Email') ?>",
          "titleChangePassword": "<?php echo __('Change Password') ?>",
          "titleChangeEmailAndPassword": "<?php echo __('Change Email and Password') ?>"



          </script>


          Step 6: helper/data.php



          <?php

          namespace <Vendor><Module>Helper;

          use MagentoFrameworkObjectManagerInterface;
          use MagentoFrameworkAppActionAction;

          class Data extends MagentoFrameworkAppHelperAbstractHelper

          protected $_customerFactory;

          protected $objectManager;

          /**
          * Initialize dependencies.
          *
          * @param MagentoFrameworkAppHelperContext $context
          * @param MagentoCustomerModelCustomerFactory $customerFactory
          */
          public function __construct(
          MagentoFrameworkAppHelperContext $context,
          MagentoCustomerModelCustomerFactory $customerFactory,
          ObjectManagerInterface $objectManager
          )
          $this->_customerFactory = $customerFactory;
          $this->objectManager = $objectManager;
          parent::__construct($context);


          /**
          * @inheritdoc
          */
          public function getCustomerAttributeValue($customerId, $attributeCode)

          $customerObject = $this->_customerFactory->create()->load($customerId);
          return $attribute = ($customerObject->getData($attributeCode)) ? $customerObject->getData($attributeCode): false;







          share|improve this answer























          • Thanks for taking time answering my question. +1 for that

            – Muhammad Anas
            21 mins ago















          1














          Step 1: Create field (customer attribute) using InstallData.php



          <?php
          namespace <vendor_name><module>Setup;

          use MagentoFrameworkModuleSetupMigration;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          /**
          * @codeCoverageIgnore
          */
          class InstallData implements InstallDataInterface

          /**
          * Customer setup factory
          *
          * @var MagentoCustomerSetupCustomerSetupFactory
          */
          private $customerSetupFactory;

          /**
          * Init
          *
          * @param MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory
          */
          public function __construct(MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory)

          $this->customerSetupFactory = $customerSetupFactory;


          /**
          * @inheritdoc
          * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
          */
          public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          /** @var CustomerSetup $customerSetup */
          $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

          $setup->startSetup();

          $customerSetup->addAttribute(MagentoCustomerModelCustomer::ENTITY, 'profile_name', [
          'type' => 'text',
          'label' => 'Profile Name',
          'input' => 'text',
          'required' => 0,
          'sort_order' => 110,
          'visible' => 1,
          'system' => 0,
          'position' => 110
          ]);
          //add attribute to attribute set
          $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'profile_name');
          $attribute->setData('used_in_forms', ['adminhtml_customer', 'customer_account_create', 'customer_account_edit']);
          $attribute->save();

          $setup->endSetup();




          Step 2: override form/register.phtml using layout customer_account_create.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <body>
          <referenceBlock name="customer_form_register">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><Vendor>_<module>::form/register.phtml</argument>
          </action>
          </referenceBlock>
          </body>
          </page>


          Step 3: register.phtml



          <?php $_helper = $this->helper('<vendor><module>HelperData'); ?>
          <?php echo $block->getChildHtml('form_fields_before')?>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.extra')?>
          <form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off">
          <fieldset class="fieldset create info">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Personal Information') ?></span></legend><br>
          <input type="hidden" name="success_url" value="<?php /* @escapeNotVerified */ echo $block->getSuccessUrl() ?>">
          <input type="hidden" name="error_url" value="<?php /* @escapeNotVerified */ echo $block->getErrorUrl() ?>">
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
          <?php if ($block->isNewsletterEnabled()): ?>
          <div class="field choice newsletter">
          <input type="checkbox" name="is_subscribed" title="<?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?>" value="1" id="is_subscribed"<?php if ($block->getFormData()->getIsSubscribed()): ?> checked="checked"<?php endif; ?> class="checkbox">
          <label for="is_subscribed" class="label"><span><?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?></span></label>
          </div>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.newsletter')?>
          <?php endif ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getFormData()->getDob())->toHtml() ?>
          <?php endif ?>

          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getFormData()->getTaxvat())->toHtml() ?>
          <?php endif ?>

          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getFormData()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom code for Profile-Name Field -->
          <div class="field profile-name">
          <label for="profile-name" class="label"><span><?php /* @escapeNotVerified */ echo __('Profile Name') ?></span></label>
          <div class="control">
          <input type="text" name="profile_name" id="profile-name" value="<?php echo $block->escapeHtml($block->getFormData()->getData('profile_name')) ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-text" maxlength="250">
          </div>
          </div>
          <!-- End -->

          </fieldset>
          <?php if ($block->getShowAddressFields()): ?>
          <fieldset class="fieldset address">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Address Information') ?></span></legend><br>
          <input type="hidden" name="create_address" value="1" />
          <div class="field company">
          <label for="company" class="label"><span><?php /* @escapeNotVerified */ echo __('Company') ?></span></label>
          <div class="control">
          <input type="text" name="company" id="company" value="<?php echo $block->escapeHtml($block->getFormData()->getCompany()) ?>" title="<?php /* @escapeNotVerified */ echo __('Company') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('company') ?>">
          </div>
          </div>
          <div class="field telephone">
          <label for="telephone" class="label"><span><?php /* @escapeNotVerified */ echo __('Phone Number') ?></span></label>
          <div class="control">
          <input type="text" name="telephone" id="telephone" value="<?php echo $block->escapeHtml($block->getFormData()->getTelephone()) ?>" title="<?php /* @escapeNotVerified */ echo __('Phone Number') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('telephone') ?>">
          </div>
          </div>

          <?php $_streetValidationClass = $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('street'); ?>

          <div class="field street required">
          <label for="street_1" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreet(0)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address') ?>" id="street_1" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          <div class="nested">
          <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
          <?php for ($_i = 2, $_n = $this->helper('MagentoCustomerHelperAddress')->getStreetLines(); $_i <= $_n; $_i++): ?>
          <div class="field additional">
          <label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
          <span><?php /* @escapeNotVerified */ echo __('Address') ?></span>
          </label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreetLine($_i - 1)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address %1', $_i) ?>" id="street_<?php /* @escapeNotVerified */ echo $_i ?>" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          </div>
          </div>
          <?php endfor; ?>
          </div>
          </div>
          </div>

          <div class="field required">
          <label for="city" class="label"><span><?php /* @escapeNotVerified */ echo __('City') ?></span></label>
          <div class="control">
          <input type="text" name="city" value="<?php echo $block->escapeHtml($block->getFormData()->getCity()) ?>" title="<?php /* @escapeNotVerified */ echo __('City') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('city') ?>" id="city">
          </div>
          </div>

          <div class="field region required">
          <label for="region_id" class="label"><span><?php /* @escapeNotVerified */ echo __('State/Province') ?></span></label>
          <div class="control">
          <select id="region_id" name="region_id" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="validate-select" style="display:none;">
          <option value=""><?php /* @escapeNotVerified */ echo __('Please select a region, state or province.') ?></option>
          </select>
          <input type="text" id="region" name="region" value="<?php echo $block->escapeHtml($block->getRegion()) ?>" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('region') ?>" style="display:none;">
          </div>
          </div>

          <div class="field zip required">
          <label for="zip" class="label"><span><?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?></span></label>
          <div class="control">
          <input type="text" name="postcode" value="<?php echo $block->escapeHtml($block->getFormData()->getPostcode()) ?>" title="<?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('postcode') ?>">
          </div>
          </div>

          <div class="field country required">
          <label for="country" class="label"><span><?php /* @escapeNotVerified */ echo __('Country') ?></span></label>
          <div class="control">
          <?php echo $block->getCountryHtmlSelect() ?>
          </div>
          </div>
          <?php $addressAttributes = $block->getChildBlock('customer_form_address_user_attributes');?>
          <?php if ($addressAttributes): ?>
          <?php $addressAttributes->setEntityType('customer_address'); ?>
          <?php $addressAttributes->setFieldIdFormat('address:%1$s')->setFieldNameFormat('address[%1$s]');?>
          <?php $block->restoreSessionData($addressAttributes->getMetadataForm(), 'address');?>
          <?php echo $addressAttributes->setShowContainer(false)->toHtml()?>
          <?php endif;?>
          <input type="hidden" name="default_billing" value="1">
          <input type="hidden" name="default_shipping" value="1">
          </fieldset>

          <?php endif; ?>
          <fieldset class="fieldset create account" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Sign-in Information') ?></span></legend><br>
          <div class="field required">
          <label for="email_address" class="label"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" autocomplete="email" id="email_address" value="<?php echo $block->escapeHtml($block->getFormData()->getEmail()) ?>" title="<?php /* @escapeNotVerified */ echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true">
          </div>
          </div>
          <div class="field password required" data-mage-init='"passwordStrengthIndicator": '>
          <label for="password" class="label"><span><?php /* @escapeNotVerified */ echo __('Password') ?></span></label>
          <div class="control">
          <input type="password" name="password" id="password"
          title="<?php /* @escapeNotVerified */ echo __('Password') ?>"
          class="input-text"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off">
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php /* @escapeNotVerified */ echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php /* @escapeNotVerified */ echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>

          </div>
          <div class="field confirmation required">
          <label for="password-confirmation" class="label"><span><?php /* @escapeNotVerified */ echo __('Confirm Password') ?></span></label>
          <div class="control">
          <input type="password" name="password_confirmation" title="<?php /* @escapeNotVerified */ echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="required:true, equalTo:'#password'" autocomplete="off">
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action submit primary" title="<?php /* @escapeNotVerified */ echo __('Create an Account') ?>"><span><?php /* @escapeNotVerified */ echo __('Create an Account') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php /* @escapeNotVerified */ echo __('Back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          'jquery',
          'mage/mage'
          ], function($)

          var dataForm = $('#form-validate');
          var ignore = <?php /* @escapeNotVerified */ echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          ).find('input:text').attr('autocomplete', 'off');

          );
          </script>
          <?php if ($block->getShowAddressFields()): ?>
          <script type="text/x-magento-init">

          "#country":
          "regionUpdater":
          "optionalRegionAllowed": <?php /* @escapeNotVerified */ echo($block->getConfig('general/region/display_all') ? 'true' : 'false'); ?>,
          "regionListId": "#region_id",
          "regionInputId": "#region",
          "postcodeId": "#zip",
          "form": "#form-validate",
          "regionJson": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getRegionJson() ?>,
          "defaultRegion": "<?php /* @escapeNotVerified */ echo $block->getFormData()->getRegionId() ?>",
          "countriesWithOptionalZip": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getCountriesWithOptionalZip(true) ?>



          </script>
          <?php endif; ?>


          Step 4: Override edit.phtml file using customer_account_edit.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <update handle="customer_account"/>
          <body>
          <!-- Set Custom Template for Register form -->
          <referenceBlock name="customer_edit">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><vendor>_<Module>::form/edit.phtml</argument>
          </action>
          </referenceBlock>
          <!-- End -->
          </body>
          </page>


          Step 5: form/edit.phtml



          <?php $_helper = $this->helper('<Vendor><Module>HelperData'); ?>
          <form class="form form-edit-account" action="<?php /* @escapeNotVerified */ echo $block->getUrl('customer/account/editPost') ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>" autocomplete="off">
          <fieldset class="fieldset info">
          <?php echo $block->getBlockHtml('formkey')?>
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Account Information') ?></span></legend><br>
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getCustomer())->toHtml() ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
          <?php endif ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getCustomer()->getTaxvat())->toHtml() ?>
          <?php endif ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getCustomer()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom Code For Profile-Name Field -->
          <div class="field" data-container="profile-name">
          <?php $linkedinProfile = $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'profile_name')); ?>
          <label class="label" for="profile-name">
          <span>
          <?php /* @escapeNotVerified */ echo __('Profile Name') ?>
          </span>
          </label>
          <div class="control">
          <input type="text" name="profile_name" id="linkedin-profile" data-input="linkedin-profile" value="<?php echo $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'linkedin_profile')); ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-file"/>
          </div>
          </div>
          <!-- End -->
          <div class="field choice">
          <input type="checkbox" name="change_email" id="change-email" data-role="change-email" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Email') ?>" class="checkbox" />
          <label class="label" for="change-email"><span><?php /* @escapeNotVerified */ echo __('Change Email') ?></span></label>
          </div>
          <div class="field choice">
          <input type="checkbox" name="change_password" id="change-password" data-role="change-password" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Password') ?>"<?php if ($block->getChangePassword()): ?> checked="checked"<?php endif; ?> class="checkbox" />
          <label class="label" for="change-password"><span><?php /* @escapeNotVerified */ echo __('Change Password') ?></span></label>
          </div>
          </fieldset>

          <fieldset class="fieldset password" data-container="change-email-password">
          <legend class="legend"><span data-title="change-email-password"><?php echo __('Change Email and Password') ?></span></legend><br>
          <div class="field email required" data-container="change-email">
          <label class="label" for="email"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" id="email" autocomplete="email" data-input="change-email" value="<?php echo $block->escapeHtml($block->getCustomer()->getEmail()) ?>" title="<?php echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true" />
          </div>
          </div>
          <div class="field password current required">
          <label class="label" for="current-password"><span><?php echo __('Current Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="current_password" id="current-password" data-input="current-password" autocomplete="off" />
          </div>
          </div>
          <div class="field new password required" data-container="new-password" data-mage-init='"passwordStrengthIndicator": '>
          <label class="label" for="password"><span><?php /* @escapeNotVerified */ echo __('New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password" id="password"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-input="new-password"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off" />
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>
          </div>
          <div class="field confirm password required" data-container="confirm-password">
          <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password_confirmation" id="password-confirmation"
          data-input="confirm-password"
          autocomplete="off" />
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action save primary" title="<?php echo __('Save') ?>"><span><?php echo __('Save') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php echo __('Go back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          "jquery",
          "mage/mage"
          ], function($)
          var dataForm = $('#form-validate');
          var ignore = <?php echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          );
          );
          </script>
          <script type="text/x-magento-init">

          "[data-role=change-email], [data-role=change-password]":
          "changeEmailPassword":
          "titleChangeEmail": "<?php echo __('Change Email') ?>",
          "titleChangePassword": "<?php echo __('Change Password') ?>",
          "titleChangeEmailAndPassword": "<?php echo __('Change Email and Password') ?>"



          </script>


          Step 6: helper/data.php



          <?php

          namespace <Vendor><Module>Helper;

          use MagentoFrameworkObjectManagerInterface;
          use MagentoFrameworkAppActionAction;

          class Data extends MagentoFrameworkAppHelperAbstractHelper

          protected $_customerFactory;

          protected $objectManager;

          /**
          * Initialize dependencies.
          *
          * @param MagentoFrameworkAppHelperContext $context
          * @param MagentoCustomerModelCustomerFactory $customerFactory
          */
          public function __construct(
          MagentoFrameworkAppHelperContext $context,
          MagentoCustomerModelCustomerFactory $customerFactory,
          ObjectManagerInterface $objectManager
          )
          $this->_customerFactory = $customerFactory;
          $this->objectManager = $objectManager;
          parent::__construct($context);


          /**
          * @inheritdoc
          */
          public function getCustomerAttributeValue($customerId, $attributeCode)

          $customerObject = $this->_customerFactory->create()->load($customerId);
          return $attribute = ($customerObject->getData($attributeCode)) ? $customerObject->getData($attributeCode): false;







          share|improve this answer























          • Thanks for taking time answering my question. +1 for that

            – Muhammad Anas
            21 mins ago













          1












          1








          1







          Step 1: Create field (customer attribute) using InstallData.php



          <?php
          namespace <vendor_name><module>Setup;

          use MagentoFrameworkModuleSetupMigration;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          /**
          * @codeCoverageIgnore
          */
          class InstallData implements InstallDataInterface

          /**
          * Customer setup factory
          *
          * @var MagentoCustomerSetupCustomerSetupFactory
          */
          private $customerSetupFactory;

          /**
          * Init
          *
          * @param MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory
          */
          public function __construct(MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory)

          $this->customerSetupFactory = $customerSetupFactory;


          /**
          * @inheritdoc
          * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
          */
          public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          /** @var CustomerSetup $customerSetup */
          $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

          $setup->startSetup();

          $customerSetup->addAttribute(MagentoCustomerModelCustomer::ENTITY, 'profile_name', [
          'type' => 'text',
          'label' => 'Profile Name',
          'input' => 'text',
          'required' => 0,
          'sort_order' => 110,
          'visible' => 1,
          'system' => 0,
          'position' => 110
          ]);
          //add attribute to attribute set
          $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'profile_name');
          $attribute->setData('used_in_forms', ['adminhtml_customer', 'customer_account_create', 'customer_account_edit']);
          $attribute->save();

          $setup->endSetup();




          Step 2: override form/register.phtml using layout customer_account_create.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <body>
          <referenceBlock name="customer_form_register">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><Vendor>_<module>::form/register.phtml</argument>
          </action>
          </referenceBlock>
          </body>
          </page>


          Step 3: register.phtml



          <?php $_helper = $this->helper('<vendor><module>HelperData'); ?>
          <?php echo $block->getChildHtml('form_fields_before')?>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.extra')?>
          <form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off">
          <fieldset class="fieldset create info">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Personal Information') ?></span></legend><br>
          <input type="hidden" name="success_url" value="<?php /* @escapeNotVerified */ echo $block->getSuccessUrl() ?>">
          <input type="hidden" name="error_url" value="<?php /* @escapeNotVerified */ echo $block->getErrorUrl() ?>">
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
          <?php if ($block->isNewsletterEnabled()): ?>
          <div class="field choice newsletter">
          <input type="checkbox" name="is_subscribed" title="<?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?>" value="1" id="is_subscribed"<?php if ($block->getFormData()->getIsSubscribed()): ?> checked="checked"<?php endif; ?> class="checkbox">
          <label for="is_subscribed" class="label"><span><?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?></span></label>
          </div>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.newsletter')?>
          <?php endif ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getFormData()->getDob())->toHtml() ?>
          <?php endif ?>

          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getFormData()->getTaxvat())->toHtml() ?>
          <?php endif ?>

          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getFormData()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom code for Profile-Name Field -->
          <div class="field profile-name">
          <label for="profile-name" class="label"><span><?php /* @escapeNotVerified */ echo __('Profile Name') ?></span></label>
          <div class="control">
          <input type="text" name="profile_name" id="profile-name" value="<?php echo $block->escapeHtml($block->getFormData()->getData('profile_name')) ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-text" maxlength="250">
          </div>
          </div>
          <!-- End -->

          </fieldset>
          <?php if ($block->getShowAddressFields()): ?>
          <fieldset class="fieldset address">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Address Information') ?></span></legend><br>
          <input type="hidden" name="create_address" value="1" />
          <div class="field company">
          <label for="company" class="label"><span><?php /* @escapeNotVerified */ echo __('Company') ?></span></label>
          <div class="control">
          <input type="text" name="company" id="company" value="<?php echo $block->escapeHtml($block->getFormData()->getCompany()) ?>" title="<?php /* @escapeNotVerified */ echo __('Company') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('company') ?>">
          </div>
          </div>
          <div class="field telephone">
          <label for="telephone" class="label"><span><?php /* @escapeNotVerified */ echo __('Phone Number') ?></span></label>
          <div class="control">
          <input type="text" name="telephone" id="telephone" value="<?php echo $block->escapeHtml($block->getFormData()->getTelephone()) ?>" title="<?php /* @escapeNotVerified */ echo __('Phone Number') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('telephone') ?>">
          </div>
          </div>

          <?php $_streetValidationClass = $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('street'); ?>

          <div class="field street required">
          <label for="street_1" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreet(0)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address') ?>" id="street_1" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          <div class="nested">
          <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
          <?php for ($_i = 2, $_n = $this->helper('MagentoCustomerHelperAddress')->getStreetLines(); $_i <= $_n; $_i++): ?>
          <div class="field additional">
          <label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
          <span><?php /* @escapeNotVerified */ echo __('Address') ?></span>
          </label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreetLine($_i - 1)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address %1', $_i) ?>" id="street_<?php /* @escapeNotVerified */ echo $_i ?>" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          </div>
          </div>
          <?php endfor; ?>
          </div>
          </div>
          </div>

          <div class="field required">
          <label for="city" class="label"><span><?php /* @escapeNotVerified */ echo __('City') ?></span></label>
          <div class="control">
          <input type="text" name="city" value="<?php echo $block->escapeHtml($block->getFormData()->getCity()) ?>" title="<?php /* @escapeNotVerified */ echo __('City') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('city') ?>" id="city">
          </div>
          </div>

          <div class="field region required">
          <label for="region_id" class="label"><span><?php /* @escapeNotVerified */ echo __('State/Province') ?></span></label>
          <div class="control">
          <select id="region_id" name="region_id" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="validate-select" style="display:none;">
          <option value=""><?php /* @escapeNotVerified */ echo __('Please select a region, state or province.') ?></option>
          </select>
          <input type="text" id="region" name="region" value="<?php echo $block->escapeHtml($block->getRegion()) ?>" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('region') ?>" style="display:none;">
          </div>
          </div>

          <div class="field zip required">
          <label for="zip" class="label"><span><?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?></span></label>
          <div class="control">
          <input type="text" name="postcode" value="<?php echo $block->escapeHtml($block->getFormData()->getPostcode()) ?>" title="<?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('postcode') ?>">
          </div>
          </div>

          <div class="field country required">
          <label for="country" class="label"><span><?php /* @escapeNotVerified */ echo __('Country') ?></span></label>
          <div class="control">
          <?php echo $block->getCountryHtmlSelect() ?>
          </div>
          </div>
          <?php $addressAttributes = $block->getChildBlock('customer_form_address_user_attributes');?>
          <?php if ($addressAttributes): ?>
          <?php $addressAttributes->setEntityType('customer_address'); ?>
          <?php $addressAttributes->setFieldIdFormat('address:%1$s')->setFieldNameFormat('address[%1$s]');?>
          <?php $block->restoreSessionData($addressAttributes->getMetadataForm(), 'address');?>
          <?php echo $addressAttributes->setShowContainer(false)->toHtml()?>
          <?php endif;?>
          <input type="hidden" name="default_billing" value="1">
          <input type="hidden" name="default_shipping" value="1">
          </fieldset>

          <?php endif; ?>
          <fieldset class="fieldset create account" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Sign-in Information') ?></span></legend><br>
          <div class="field required">
          <label for="email_address" class="label"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" autocomplete="email" id="email_address" value="<?php echo $block->escapeHtml($block->getFormData()->getEmail()) ?>" title="<?php /* @escapeNotVerified */ echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true">
          </div>
          </div>
          <div class="field password required" data-mage-init='"passwordStrengthIndicator": '>
          <label for="password" class="label"><span><?php /* @escapeNotVerified */ echo __('Password') ?></span></label>
          <div class="control">
          <input type="password" name="password" id="password"
          title="<?php /* @escapeNotVerified */ echo __('Password') ?>"
          class="input-text"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off">
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php /* @escapeNotVerified */ echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php /* @escapeNotVerified */ echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>

          </div>
          <div class="field confirmation required">
          <label for="password-confirmation" class="label"><span><?php /* @escapeNotVerified */ echo __('Confirm Password') ?></span></label>
          <div class="control">
          <input type="password" name="password_confirmation" title="<?php /* @escapeNotVerified */ echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="required:true, equalTo:'#password'" autocomplete="off">
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action submit primary" title="<?php /* @escapeNotVerified */ echo __('Create an Account') ?>"><span><?php /* @escapeNotVerified */ echo __('Create an Account') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php /* @escapeNotVerified */ echo __('Back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          'jquery',
          'mage/mage'
          ], function($)

          var dataForm = $('#form-validate');
          var ignore = <?php /* @escapeNotVerified */ echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          ).find('input:text').attr('autocomplete', 'off');

          );
          </script>
          <?php if ($block->getShowAddressFields()): ?>
          <script type="text/x-magento-init">

          "#country":
          "regionUpdater":
          "optionalRegionAllowed": <?php /* @escapeNotVerified */ echo($block->getConfig('general/region/display_all') ? 'true' : 'false'); ?>,
          "regionListId": "#region_id",
          "regionInputId": "#region",
          "postcodeId": "#zip",
          "form": "#form-validate",
          "regionJson": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getRegionJson() ?>,
          "defaultRegion": "<?php /* @escapeNotVerified */ echo $block->getFormData()->getRegionId() ?>",
          "countriesWithOptionalZip": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getCountriesWithOptionalZip(true) ?>



          </script>
          <?php endif; ?>


          Step 4: Override edit.phtml file using customer_account_edit.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <update handle="customer_account"/>
          <body>
          <!-- Set Custom Template for Register form -->
          <referenceBlock name="customer_edit">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><vendor>_<Module>::form/edit.phtml</argument>
          </action>
          </referenceBlock>
          <!-- End -->
          </body>
          </page>


          Step 5: form/edit.phtml



          <?php $_helper = $this->helper('<Vendor><Module>HelperData'); ?>
          <form class="form form-edit-account" action="<?php /* @escapeNotVerified */ echo $block->getUrl('customer/account/editPost') ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>" autocomplete="off">
          <fieldset class="fieldset info">
          <?php echo $block->getBlockHtml('formkey')?>
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Account Information') ?></span></legend><br>
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getCustomer())->toHtml() ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
          <?php endif ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getCustomer()->getTaxvat())->toHtml() ?>
          <?php endif ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getCustomer()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom Code For Profile-Name Field -->
          <div class="field" data-container="profile-name">
          <?php $linkedinProfile = $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'profile_name')); ?>
          <label class="label" for="profile-name">
          <span>
          <?php /* @escapeNotVerified */ echo __('Profile Name') ?>
          </span>
          </label>
          <div class="control">
          <input type="text" name="profile_name" id="linkedin-profile" data-input="linkedin-profile" value="<?php echo $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'linkedin_profile')); ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-file"/>
          </div>
          </div>
          <!-- End -->
          <div class="field choice">
          <input type="checkbox" name="change_email" id="change-email" data-role="change-email" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Email') ?>" class="checkbox" />
          <label class="label" for="change-email"><span><?php /* @escapeNotVerified */ echo __('Change Email') ?></span></label>
          </div>
          <div class="field choice">
          <input type="checkbox" name="change_password" id="change-password" data-role="change-password" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Password') ?>"<?php if ($block->getChangePassword()): ?> checked="checked"<?php endif; ?> class="checkbox" />
          <label class="label" for="change-password"><span><?php /* @escapeNotVerified */ echo __('Change Password') ?></span></label>
          </div>
          </fieldset>

          <fieldset class="fieldset password" data-container="change-email-password">
          <legend class="legend"><span data-title="change-email-password"><?php echo __('Change Email and Password') ?></span></legend><br>
          <div class="field email required" data-container="change-email">
          <label class="label" for="email"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" id="email" autocomplete="email" data-input="change-email" value="<?php echo $block->escapeHtml($block->getCustomer()->getEmail()) ?>" title="<?php echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true" />
          </div>
          </div>
          <div class="field password current required">
          <label class="label" for="current-password"><span><?php echo __('Current Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="current_password" id="current-password" data-input="current-password" autocomplete="off" />
          </div>
          </div>
          <div class="field new password required" data-container="new-password" data-mage-init='"passwordStrengthIndicator": '>
          <label class="label" for="password"><span><?php /* @escapeNotVerified */ echo __('New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password" id="password"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-input="new-password"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off" />
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>
          </div>
          <div class="field confirm password required" data-container="confirm-password">
          <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password_confirmation" id="password-confirmation"
          data-input="confirm-password"
          autocomplete="off" />
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action save primary" title="<?php echo __('Save') ?>"><span><?php echo __('Save') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php echo __('Go back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          "jquery",
          "mage/mage"
          ], function($)
          var dataForm = $('#form-validate');
          var ignore = <?php echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          );
          );
          </script>
          <script type="text/x-magento-init">

          "[data-role=change-email], [data-role=change-password]":
          "changeEmailPassword":
          "titleChangeEmail": "<?php echo __('Change Email') ?>",
          "titleChangePassword": "<?php echo __('Change Password') ?>",
          "titleChangeEmailAndPassword": "<?php echo __('Change Email and Password') ?>"



          </script>


          Step 6: helper/data.php



          <?php

          namespace <Vendor><Module>Helper;

          use MagentoFrameworkObjectManagerInterface;
          use MagentoFrameworkAppActionAction;

          class Data extends MagentoFrameworkAppHelperAbstractHelper

          protected $_customerFactory;

          protected $objectManager;

          /**
          * Initialize dependencies.
          *
          * @param MagentoFrameworkAppHelperContext $context
          * @param MagentoCustomerModelCustomerFactory $customerFactory
          */
          public function __construct(
          MagentoFrameworkAppHelperContext $context,
          MagentoCustomerModelCustomerFactory $customerFactory,
          ObjectManagerInterface $objectManager
          )
          $this->_customerFactory = $customerFactory;
          $this->objectManager = $objectManager;
          parent::__construct($context);


          /**
          * @inheritdoc
          */
          public function getCustomerAttributeValue($customerId, $attributeCode)

          $customerObject = $this->_customerFactory->create()->load($customerId);
          return $attribute = ($customerObject->getData($attributeCode)) ? $customerObject->getData($attributeCode): false;







          share|improve this answer













          Step 1: Create field (customer attribute) using InstallData.php



          <?php
          namespace <vendor_name><module>Setup;

          use MagentoFrameworkModuleSetupMigration;
          use MagentoFrameworkSetupInstallDataInterface;
          use MagentoFrameworkSetupModuleContextInterface;
          use MagentoFrameworkSetupModuleDataSetupInterface;

          /**
          * @codeCoverageIgnore
          */
          class InstallData implements InstallDataInterface

          /**
          * Customer setup factory
          *
          * @var MagentoCustomerSetupCustomerSetupFactory
          */
          private $customerSetupFactory;

          /**
          * Init
          *
          * @param MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory
          */
          public function __construct(MagentoCustomerSetupCustomerSetupFactory $customerSetupFactory)

          $this->customerSetupFactory = $customerSetupFactory;


          /**
          * @inheritdoc
          * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
          */
          public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

          /** @var CustomerSetup $customerSetup */
          $customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

          $setup->startSetup();

          $customerSetup->addAttribute(MagentoCustomerModelCustomer::ENTITY, 'profile_name', [
          'type' => 'text',
          'label' => 'Profile Name',
          'input' => 'text',
          'required' => 0,
          'sort_order' => 110,
          'visible' => 1,
          'system' => 0,
          'position' => 110
          ]);
          //add attribute to attribute set
          $attribute = $customerSetup->getEavConfig()->getAttribute('customer', 'profile_name');
          $attribute->setData('used_in_forms', ['adminhtml_customer', 'customer_account_create', 'customer_account_edit']);
          $attribute->save();

          $setup->endSetup();




          Step 2: override form/register.phtml using layout customer_account_create.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <body>
          <referenceBlock name="customer_form_register">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><Vendor>_<module>::form/register.phtml</argument>
          </action>
          </referenceBlock>
          </body>
          </page>


          Step 3: register.phtml



          <?php $_helper = $this->helper('<vendor><module>HelperData'); ?>
          <?php echo $block->getChildHtml('form_fields_before')?>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.extra')?>
          <form class="form create account form-create-account" action="<?php /* @escapeNotVerified */ echo $block->getPostActionUrl() ?>" method="post" id="form-validate" enctype="multipart/form-data" autocomplete="off">
          <fieldset class="fieldset create info">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Personal Information') ?></span></legend><br>
          <input type="hidden" name="success_url" value="<?php /* @escapeNotVerified */ echo $block->getSuccessUrl() ?>">
          <input type="hidden" name="error_url" value="<?php /* @escapeNotVerified */ echo $block->getErrorUrl() ?>">
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getFormData())->setForceUseCustomerAttributes(true)->toHtml() ?>
          <?php if ($block->isNewsletterEnabled()): ?>
          <div class="field choice newsletter">
          <input type="checkbox" name="is_subscribed" title="<?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?>" value="1" id="is_subscribed"<?php if ($block->getFormData()->getIsSubscribed()): ?> checked="checked"<?php endif; ?> class="checkbox">
          <label for="is_subscribed" class="label"><span><?php /* @escapeNotVerified */ echo __('Sign Up for Newsletter') ?></span></label>
          </div>
          <?php /* Extensions placeholder */ ?>
          <?php echo $block->getChildHtml('customer.form.register.newsletter')?>
          <?php endif ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getFormData()->getDob())->toHtml() ?>
          <?php endif ?>

          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getFormData()->getTaxvat())->toHtml() ?>
          <?php endif ?>

          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getFormData()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom code for Profile-Name Field -->
          <div class="field profile-name">
          <label for="profile-name" class="label"><span><?php /* @escapeNotVerified */ echo __('Profile Name') ?></span></label>
          <div class="control">
          <input type="text" name="profile_name" id="profile-name" value="<?php echo $block->escapeHtml($block->getFormData()->getData('profile_name')) ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-text" maxlength="250">
          </div>
          </div>
          <!-- End -->

          </fieldset>
          <?php if ($block->getShowAddressFields()): ?>
          <fieldset class="fieldset address">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Address Information') ?></span></legend><br>
          <input type="hidden" name="create_address" value="1" />
          <div class="field company">
          <label for="company" class="label"><span><?php /* @escapeNotVerified */ echo __('Company') ?></span></label>
          <div class="control">
          <input type="text" name="company" id="company" value="<?php echo $block->escapeHtml($block->getFormData()->getCompany()) ?>" title="<?php /* @escapeNotVerified */ echo __('Company') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('company') ?>">
          </div>
          </div>
          <div class="field telephone">
          <label for="telephone" class="label"><span><?php /* @escapeNotVerified */ echo __('Phone Number') ?></span></label>
          <div class="control">
          <input type="text" name="telephone" id="telephone" value="<?php echo $block->escapeHtml($block->getFormData()->getTelephone()) ?>" title="<?php /* @escapeNotVerified */ echo __('Phone Number') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('telephone') ?>">
          </div>
          </div>

          <?php $_streetValidationClass = $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('street'); ?>

          <div class="field street required">
          <label for="street_1" class="label"><span><?php /* @escapeNotVerified */ echo __('Street Address') ?></span></label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreet(0)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address') ?>" id="street_1" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          <div class="nested">
          <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
          <?php for ($_i = 2, $_n = $this->helper('MagentoCustomerHelperAddress')->getStreetLines(); $_i <= $_n; $_i++): ?>
          <div class="field additional">
          <label class="label" for="street_<?php /* @escapeNotVerified */ echo $_i ?>">
          <span><?php /* @escapeNotVerified */ echo __('Address') ?></span>
          </label>
          <div class="control">
          <input type="text" name="street[]" value="<?php echo $block->escapeHtml($block->getFormData()->getStreetLine($_i - 1)) ?>" title="<?php /* @escapeNotVerified */ echo __('Street Address %1', $_i) ?>" id="street_<?php /* @escapeNotVerified */ echo $_i ?>" class="input-text <?php /* @escapeNotVerified */ echo $_streetValidationClass ?>">
          </div>
          </div>
          <?php endfor; ?>
          </div>
          </div>
          </div>

          <div class="field required">
          <label for="city" class="label"><span><?php /* @escapeNotVerified */ echo __('City') ?></span></label>
          <div class="control">
          <input type="text" name="city" value="<?php echo $block->escapeHtml($block->getFormData()->getCity()) ?>" title="<?php /* @escapeNotVerified */ echo __('City') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('city') ?>" id="city">
          </div>
          </div>

          <div class="field region required">
          <label for="region_id" class="label"><span><?php /* @escapeNotVerified */ echo __('State/Province') ?></span></label>
          <div class="control">
          <select id="region_id" name="region_id" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="validate-select" style="display:none;">
          <option value=""><?php /* @escapeNotVerified */ echo __('Please select a region, state or province.') ?></option>
          </select>
          <input type="text" id="region" name="region" value="<?php echo $block->escapeHtml($block->getRegion()) ?>" title="<?php /* @escapeNotVerified */ echo __('State/Province') ?>" class="input-text <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('region') ?>" style="display:none;">
          </div>
          </div>

          <div class="field zip required">
          <label for="zip" class="label"><span><?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?></span></label>
          <div class="control">
          <input type="text" name="postcode" value="<?php echo $block->escapeHtml($block->getFormData()->getPostcode()) ?>" title="<?php /* @escapeNotVerified */ echo __('Zip/Postal Code') ?>" id="zip" class="input-text validate-zip-international <?php /* @escapeNotVerified */ echo $this->helper('MagentoCustomerHelperAddress')->getAttributeValidationClass('postcode') ?>">
          </div>
          </div>

          <div class="field country required">
          <label for="country" class="label"><span><?php /* @escapeNotVerified */ echo __('Country') ?></span></label>
          <div class="control">
          <?php echo $block->getCountryHtmlSelect() ?>
          </div>
          </div>
          <?php $addressAttributes = $block->getChildBlock('customer_form_address_user_attributes');?>
          <?php if ($addressAttributes): ?>
          <?php $addressAttributes->setEntityType('customer_address'); ?>
          <?php $addressAttributes->setFieldIdFormat('address:%1$s')->setFieldNameFormat('address[%1$s]');?>
          <?php $block->restoreSessionData($addressAttributes->getMetadataForm(), 'address');?>
          <?php echo $addressAttributes->setShowContainer(false)->toHtml()?>
          <?php endif;?>
          <input type="hidden" name="default_billing" value="1">
          <input type="hidden" name="default_shipping" value="1">
          </fieldset>

          <?php endif; ?>
          <fieldset class="fieldset create account" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>">
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Sign-in Information') ?></span></legend><br>
          <div class="field required">
          <label for="email_address" class="label"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" autocomplete="email" id="email_address" value="<?php echo $block->escapeHtml($block->getFormData()->getEmail()) ?>" title="<?php /* @escapeNotVerified */ echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true">
          </div>
          </div>
          <div class="field password required" data-mage-init='"passwordStrengthIndicator": '>
          <label for="password" class="label"><span><?php /* @escapeNotVerified */ echo __('Password') ?></span></label>
          <div class="control">
          <input type="password" name="password" id="password"
          title="<?php /* @escapeNotVerified */ echo __('Password') ?>"
          class="input-text"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off">
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php /* @escapeNotVerified */ echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php /* @escapeNotVerified */ echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>

          </div>
          <div class="field confirmation required">
          <label for="password-confirmation" class="label"><span><?php /* @escapeNotVerified */ echo __('Confirm Password') ?></span></label>
          <div class="control">
          <input type="password" name="password_confirmation" title="<?php /* @escapeNotVerified */ echo __('Confirm Password') ?>" id="password-confirmation" class="input-text" data-validate="required:true, equalTo:'#password'" autocomplete="off">
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action submit primary" title="<?php /* @escapeNotVerified */ echo __('Create an Account') ?>"><span><?php /* @escapeNotVerified */ echo __('Create an Account') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php /* @escapeNotVerified */ echo __('Back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          'jquery',
          'mage/mage'
          ], function($)

          var dataForm = $('#form-validate');
          var ignore = <?php /* @escapeNotVerified */ echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          ).find('input:text').attr('autocomplete', 'off');

          );
          </script>
          <?php if ($block->getShowAddressFields()): ?>
          <script type="text/x-magento-init">

          "#country":
          "regionUpdater":
          "optionalRegionAllowed": <?php /* @escapeNotVerified */ echo($block->getConfig('general/region/display_all') ? 'true' : 'false'); ?>,
          "regionListId": "#region_id",
          "regionInputId": "#region",
          "postcodeId": "#zip",
          "form": "#form-validate",
          "regionJson": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getRegionJson() ?>,
          "defaultRegion": "<?php /* @escapeNotVerified */ echo $block->getFormData()->getRegionId() ?>",
          "countriesWithOptionalZip": <?php /* @escapeNotVerified */ echo $this->helper('MagentoDirectoryHelperData')->getCountriesWithOptionalZip(true) ?>



          </script>
          <?php endif; ?>


          Step 4: Override edit.phtml file using customer_account_edit.xml



          <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
          <update handle="customer_account"/>
          <body>
          <!-- Set Custom Template for Register form -->
          <referenceBlock name="customer_edit">
          <action method="setTemplate">
          <argument name="template" xsi:type="string"><vendor>_<Module>::form/edit.phtml</argument>
          </action>
          </referenceBlock>
          <!-- End -->
          </body>
          </page>


          Step 5: form/edit.phtml



          <?php $_helper = $this->helper('<Vendor><Module>HelperData'); ?>
          <form class="form form-edit-account" action="<?php /* @escapeNotVerified */ echo $block->getUrl('customer/account/editPost') ?>" method="post" id="form-validate" enctype="multipart/form-data" data-hasrequired="<?php /* @escapeNotVerified */ echo __('* Required Fields') ?>" autocomplete="off">
          <fieldset class="fieldset info">
          <?php echo $block->getBlockHtml('formkey')?>
          <legend class="legend"><span><?php /* @escapeNotVerified */ echo __('Account Information') ?></span></legend><br>
          <?php echo $block->getLayout()->createBlock('MagentoCustomerBlockWidgetName')->setObject($block->getCustomer())->toHtml() ?>

          <?php $_dob = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetDob') ?>
          <?php $_taxvat = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetTaxvat') ?>
          <?php $_gender = $block->getLayout()->createBlock('MagentoCustomerBlockWidgetGender') ?>
          <?php if ($_dob->isEnabled()): ?>
          <?php echo $_dob->setDate($block->getCustomer()->getDob())->toHtml() ?>
          <?php endif ?>
          <?php if ($_taxvat->isEnabled()): ?>
          <?php echo $_taxvat->setTaxvat($block->getCustomer()->getTaxvat())->toHtml() ?>
          <?php endif ?>
          <?php if ($_gender->isEnabled()): ?>
          <?php echo $_gender->setGender($block->getCustomer()->getGender())->toHtml() ?>
          <?php endif ?>

          <!-- Custom Code For Profile-Name Field -->
          <div class="field" data-container="profile-name">
          <?php $linkedinProfile = $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'profile_name')); ?>
          <label class="label" for="profile-name">
          <span>
          <?php /* @escapeNotVerified */ echo __('Profile Name') ?>
          </span>
          </label>
          <div class="control">
          <input type="text" name="profile_name" id="linkedin-profile" data-input="linkedin-profile" value="<?php echo $block->escapeHtml($_helper->getCustomerAttributeValue($this->getCustomer()->getId(), 'linkedin_profile')); ?>" title="<?php /* @escapeNotVerified */ echo __('Profile Name') ?>" class="input-file"/>
          </div>
          </div>
          <!-- End -->
          <div class="field choice">
          <input type="checkbox" name="change_email" id="change-email" data-role="change-email" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Email') ?>" class="checkbox" />
          <label class="label" for="change-email"><span><?php /* @escapeNotVerified */ echo __('Change Email') ?></span></label>
          </div>
          <div class="field choice">
          <input type="checkbox" name="change_password" id="change-password" data-role="change-password" value="1" title="<?php /* @escapeNotVerified */ echo __('Change Password') ?>"<?php if ($block->getChangePassword()): ?> checked="checked"<?php endif; ?> class="checkbox" />
          <label class="label" for="change-password"><span><?php /* @escapeNotVerified */ echo __('Change Password') ?></span></label>
          </div>
          </fieldset>

          <fieldset class="fieldset password" data-container="change-email-password">
          <legend class="legend"><span data-title="change-email-password"><?php echo __('Change Email and Password') ?></span></legend><br>
          <div class="field email required" data-container="change-email">
          <label class="label" for="email"><span><?php /* @escapeNotVerified */ echo __('Email') ?></span></label>
          <div class="control">
          <input type="email" name="email" id="email" autocomplete="email" data-input="change-email" value="<?php echo $block->escapeHtml($block->getCustomer()->getEmail()) ?>" title="<?php echo __('Email') ?>" class="input-text" data-validate="required:true, 'validate-email':true" />
          </div>
          </div>
          <div class="field password current required">
          <label class="label" for="current-password"><span><?php echo __('Current Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="current_password" id="current-password" data-input="current-password" autocomplete="off" />
          </div>
          </div>
          <div class="field new password required" data-container="new-password" data-mage-init='"passwordStrengthIndicator": '>
          <label class="label" for="password"><span><?php /* @escapeNotVerified */ echo __('New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password" id="password"
          data-password-min-length="<?php echo $block->escapeHtml($block->getMinimumPasswordLength()) ?>"
          data-password-min-character-sets="<?php echo $block->escapeHtml($block->getRequiredCharacterClassesNumber()) ?>"
          data-input="new-password"
          data-validate="required:true, 'validate-customer-password':true"
          autocomplete="off" />
          <div id="password-strength-meter-container" data-role="password-strength-meter" >
          <div id="password-strength-meter" class="password-strength-meter">
          <?php echo __('Password Strength'); ?>:
          <span id="password-strength-meter-label" data-role="password-strength-meter-label" >
          <?php echo __('No Password'); ?>
          </span>
          </div>
          </div>
          </div>
          </div>
          <div class="field confirm password required" data-container="confirm-password">
          <label class="label" for="password-confirmation"><span><?php echo __('Confirm New Password') ?></span></label>
          <div class="control">
          <input type="password" class="input-text" name="password_confirmation" id="password-confirmation"
          data-input="confirm-password"
          autocomplete="off" />
          </div>
          </div>
          <?php echo $block->getChildHtml('form_additional_info'); ?>
          </fieldset>
          <div class="actions-toolbar">
          <div class="primary">
          <button type="submit" class="action save primary" title="<?php echo __('Save') ?>"><span><?php echo __('Save') ?></span></button>
          </div>
          <div class="secondary">
          <a class="action back" href="<?php echo $block->escapeUrl($block->getBackUrl()) ?>"><span><?php echo __('Go back') ?></span></a>
          </div>
          </div>
          </form>
          <script>
          require([
          "jquery",
          "mage/mage"
          ], function($)
          var dataForm = $('#form-validate');
          var ignore = <?php echo $_dob->isEnabled() ? ''input[id$="full"]'' : 'null'; ?>;

          dataForm.mage('validation',
          <?php if ($_dob->isEnabled()): ?>
          errorPlacement: function(error, element)
          if (element.prop('id').search('full') !== -1)
          var dobElement = $(element).parents('.customer-dob'),
          errorClass = error.prop('class');
          error.insertAfter(element.parent());
          dobElement.find('.validate-custom').addClass(errorClass)
          .after('<div class="' + errorClass + '"></div>');

          else
          error.insertAfter(element);

          ,
          ignore: ':hidden:not(' + ignore + ')'
          <?php else: ?>
          ignore: ignore ? ':hidden:not(' + ignore + ')' : ':hidden'
          <?php endif ?>
          );
          );
          </script>
          <script type="text/x-magento-init">

          "[data-role=change-email], [data-role=change-password]":
          "changeEmailPassword":
          "titleChangeEmail": "<?php echo __('Change Email') ?>",
          "titleChangePassword": "<?php echo __('Change Password') ?>",
          "titleChangeEmailAndPassword": "<?php echo __('Change Email and Password') ?>"



          </script>


          Step 6: helper/data.php



          <?php

          namespace <Vendor><Module>Helper;

          use MagentoFrameworkObjectManagerInterface;
          use MagentoFrameworkAppActionAction;

          class Data extends MagentoFrameworkAppHelperAbstractHelper

          protected $_customerFactory;

          protected $objectManager;

          /**
          * Initialize dependencies.
          *
          * @param MagentoFrameworkAppHelperContext $context
          * @param MagentoCustomerModelCustomerFactory $customerFactory
          */
          public function __construct(
          MagentoFrameworkAppHelperContext $context,
          MagentoCustomerModelCustomerFactory $customerFactory,
          ObjectManagerInterface $objectManager
          )
          $this->_customerFactory = $customerFactory;
          $this->objectManager = $objectManager;
          parent::__construct($context);


          /**
          * @inheritdoc
          */
          public function getCustomerAttributeValue($customerId, $attributeCode)

          $customerObject = $this->_customerFactory->create()->load($customerId);
          return $attribute = ($customerObject->getData($attributeCode)) ? $customerObject->getData($attributeCode): false;








          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 36 mins ago









          Rk RathodRk Rathod

          1,479214




          1,479214












          • Thanks for taking time answering my question. +1 for that

            – Muhammad Anas
            21 mins ago

















          • Thanks for taking time answering my question. +1 for that

            – Muhammad Anas
            21 mins ago
















          Thanks for taking time answering my question. +1 for that

          – Muhammad Anas
          21 mins ago





          Thanks for taking time answering my question. +1 for that

          – Muhammad Anas
          21 mins ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Magento Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f270919%2fmagento-2-add-additional-attributes-in-register%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar