cancel
Showing results for 
Search instead for 
Did you mean: 

Magento 1.9 Add new fields in the registration form

Magento 1.9 Add new fields in the registration form

I want to add 3 new fields in the registration form but only for my Brasilian shop.

Also the user is able to edit these fields in his profile 

4 REPLIES 4

Re: Magento 1.9 Add new fields in the registration form

Hello @borche_glafche

 

you need to create attribute as non required 

 

http://iulian.fenici.ro/programmatically-add-a-customer-attribute-in-magento/

 

use below link to create attribute

 

you need to add that attribute 

 

http://excellencemagentoblog.com/blog/2018/04/17/add-customer-attributes-programmatically-in-magento...

 

 

Hope it will help you.

 

if work then mark as solution

 

 


Problem solved? Click Kudos & Accept as Solution!
Sunil Patel
Magento 2 Certified Professional Developer & Frontend Developer

Re: Magento 1.9 Add new fields in the registration form

Hello @borche_glafche,

 

You need to create a new extension to make it clean, I add one filed on by an example then you will add easily another attribute on it.

 

Let's call the extension StackExchange_Customer.
You will need the following files:

app/etc/modules/StackExchange_Customer.xml - the declaration file

 

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Customer>
            <active>true</active>
            <codePool>local</codePool>
            <depends><Mage_Customer/></depends>
        </StackExchange_Customer>
    </modules>
</config> 

app/code/local/StackExchange/Customer/etc/config.xml - the configuration file

 

 

<?xml version="1.0"?>
<config>
    <modules>
        <StackExchange_Customer>
            <version>1.0.0</version>
        </StackExchange_Customer>
    </modules>
    <global>
        <helpers>
            <stackexchange_customer>
                <class>StackExchange_Customer_Helper</class>
            </stackexchange_customer>
        </helpers>
        <resources>
            <stackexchange_customer_setup>
                <setup>
                    <module>StackExchange_Customer</module>
                    <class>Mage_Customer_Model_Resource_Setup</class>
                </setup>
            </stackexchange_customer_setup>
        </resources>
    </global>
    <frontend>
        <layout>
            <updates>
                <stackexchange_customer>
                    <file>stackexchange_customer.xml</file>
                </stackexchange_customer>
            </updates>
        </layout>
        <translate>
            <modules>
                <StackExchange_Customer>
                    <files>
                        <default>StackExchange_Customer.csv</default>
                    </files>
                </StackExchange_Customer>
            </modules>
        </translate>
    </frontend>
</config>

app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.php - the install file. Will add the new attribute.

 

<?php
$this->addAttribute('customer', 'license_number', array(
    'type'      => 'varchar',
    'label'     => 'License Number',
    'input'     => 'text',
    'position'  => 120,
    'required'  => false,//or true
    'is_system' => 0,
));
$attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'license_number');
$attribute->setData('used_in_forms', array(
    'adminhtml_customer',
    'checkout_register',
    'customer_account_create',
    'customer_account_edit',
));
$attribute->setData('is_user_defined', 0);
$attribute->save();

app/code/local/StackExchange/Customer/Helper/Data.php - the module main helper

<?php
class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract
{

}

This will add your attribute for the customer.
It should work nicely on the backend.
Unfortunately, you have to edit the frontend templates manually now because Magento does not have any event or empty block where you can put your fields.
For this you need the following.

app/design/frontend/base/default/layout/stackexchange_customer.xml

<?xml version="1.0"?>
<layout>
    <customer_account_edit>
        <reference name="customer_edit">
            <action method="setTemplate">
                <template>stackexchange_customer/form/edit.phtml</template>
            </action>
        </reference>
    </customer_account_edit>
    <customer_account_create>
        <reference name="customer_form_register">
            <action method="setTemplate">
                <template>stackexchange_customer/register.phtml</template>
            </action>
        </reference>
    </customer_account_create>
</layout>

And now the templates.

app/design/frontend/base/default/template/stackexchange_customer/register.phtml - the registration template.
For this one make a clone of the /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtml and just insert this somewhere inside the form. I don't need to post the full file here. Arrange it as you please

<li>
    <label for="license_number"><?php echo $this->__('License Number') ?></label>
    <div class="input-box">
        <input type="text" name="license_number" id="license_number" value="<?php echo $this->escapeHtml($this->getFormData()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
    </div>
</li>

/app/design/frontend/base/default/template/stackexchange_customer/form/edit.phtml For this one clone /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtml and insert somewhere inside the form this:

<li>
    <label for="license_number"><?php echo $this->__('License Number') ?></label>
    <div class="input-box">
        <input type="text" name="license_number" id="license_number" value="<?php echo $this->htmlEscape($this->getCustomer()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" />
    </div>
</li>

You can also create the translation file. Is not mandatory but it's nice to have

app/locale/en_US/StackExchange_Customer.csv

"License Number","License Number"

Clear the cache and you should be set.

 
--
If my answer is useful, please Accept as Solution & give Kudos

Re: Magento 1.9 Add new fields in the registration form

The second link is  Magento 2. Probably it wouldn't work for magento 1.9.

Re: Magento 1.9 Add new fields in the registration form


@borche_glafche wrote:

I want to add 3 new fields in the registration form but only for my Brasilian shop.

Also the user is able to edit these fields in his profile