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

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

Flight departed from the gate 5 min before scheduled departure time. Refund options

How to get a flat-head nail out of a piece of wood?

What helicopter has the most rotor blades?

How can I prevent/balance waiting and turtling as a response to cooldown mechanics

3D Masyu - A Die

What does Sonny Burch mean by, "S.H.I.E.L.D. and HYDRA don't even exist anymore"?

Why do C and C++ allow the expression (int) + 4*5?

The Nth Gryphon Number

why doesn't university give past final exams' answers

Inverse square law not accurate for non-point masses?

One-one communication

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

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

Where did Ptolemy compare the Earth to the distance of fixed stars?

My mentor says to set image to Fine instead of RAW — how is this different from JPG?

IC on Digikey is 5x more expensive than board containing same IC on Alibaba: How?

Should man-made satellites feature an intelligent inverted "cow catcher"?

.bashrc alias for a command with fixed second parameter

Getting representations of the Lie group out of representations of its Lie algebra

Why are two-digit numbers in Jonathan Swift's "Gulliver's Travels" (1726) written in "German style"?

Noise in Eigenvalues plot

Weaponising the Grasp-at-a-Distance spell

What is a more techy Technical Writer job title that isn't cutesy or confusing?



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 1 hour ago









      Aaditya

      4,41121139




      4,41121139










      asked 1 hour 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
            1 hour ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            1 hour 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
            1 hour 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
            1 hour ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            1 hour 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
            1 hour ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            1 hour 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 1 hour ago









          AadityaAaditya

          4,41121139




          4,41121139







          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            1 hour ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            1 hour ago












          • 1





            Worked for me. Thanks :)

            – Muhammad Anas
            1 hour ago






          • 1





            :) Anytime, Happy coding!

            – Aaditya
            1 hour ago







          1




          1





          Worked for me. Thanks :)

          – Muhammad Anas
          1 hour ago





          Worked for me. Thanks :)

          – Muhammad Anas
          1 hour ago




          1




          1





          :) Anytime, Happy coding!

          – Aaditya
          1 hour ago





          :) Anytime, Happy coding!

          – Aaditya
          1 hour 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
            1 hour 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
            1 hour 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 1 hour ago









          Rk RathodRk Rathod

          1,479214




          1,479214












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

            – Muhammad Anas
            1 hour ago

















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

            – Muhammad Anas
            1 hour ago
















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

          – Muhammad Anas
          1 hour ago





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

          – Muhammad Anas
          1 hour 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

          Isabella Eugénie Boyer Biographie | Références | Menu de navigationmodifiermodifier le codeComparator to Compute the Relative Value of a U.S. Dollar Amount – 1774 to Present.

          Join wedge with single bond in chemfigHow to make only one part of double bond bold with chemfig?Crossing bonds in chemfigjoining atoms in chemfig. Two adjacent molculesHow do I selectively change bond length in chemfig?Ugly bond joints in chemfigchemfig: reaction above arrowUsing the mhchem and chemfig packages in conjunctionBonding to specific element letter using chemfigResonance hybrids in chemfigScale chemfig molecule in beamer with tikzWhy does this chemfig bond with a hook start in the middle of the atom?

          Compiling documents onlineAre any web base TEX editors with live collaboration available?Is there a web-based LaTeX or TeX editor?Creating a PDF file online from a LaTeX templateAre there any online LaTeX editors that provide the latest packages?Comparison of browser-based latex processorsCan I find something like this online?Is there a site where I can enter a latex expression, and it shows me an image of the compiled expression?Automatic online compiling systemA resource for converting LaTeX within the browserIs there an equivalent of jsfiddle for LaTeX?Online LaTeX syntax highlighterComparison of browser-based latex processorsDo the online LaTeX compilers use a TeX daemon to speed up their compilation?Undefined control sequence documentclassLaTeX Syntax Highlighting in Google DriveWhy are my Latex compile times varying massively?Online compilation with commercial fontsCompiling multiple LaTeX filesSlow compiling of large documents in TeXstudiodocument not compiling with custom .cls