Dear Tow…, this post is basically for new guys. Few guys asked me how to add extra field(s) in registration process. So, here I will try to give few technical tricks.
1. Add new fields in config xml (app\code\core\Mage\Customer\etc\config.xml). If you create new module then you can add this xml block in module config xml file. Create new module is the best practice and recommended
<?xml version="1.0"?>
<fieldsets>
<customer_account>
<prefix><create>1</create><update>1</update><name>1</name></prefix>
<firstname><create>1</create><update>1</update><name>1</name></firstname>
<middlename><create>1</create><update>1</update><name>1</name></middlename>
<lastname><create>1</create><update>1</update><name>1</name></lastname>
<suffix><create>1</create><update>1</update><name>1</name></suffix>
<email><create>1</create><update>1</update></email>
<password><create>1</create></password>
<confirmation><create>1</create></confirmation>
<dob><create>1</create><update>1</update></dob>
<taxvat><create>1</create><update>1</update></taxvat>
<gender><create>1</create><update>1</update></gender>
/* newly added field(s)*/
<accounttype><create>1</create><update>1</update><name>1</name></accounttype>
<companyname><create>1</create><update>1</update><name>1</name></companyname>
</customer_account>
</fieldsets>
2. Add these extra field(s) in your respective theme registration.phtml (app\design\frontend\…\…\template\customer\form\registration.phtml). Keep the field name same as you mentioned in config.xml
3. To save extra data in database with customer registration process you have to add these extra field(s) as entity attribute in eav_attribute table. Here is sql script.
insert into `magento`.`eav_attribute` (`entity_type_id`, `attribute_code`, `attribute_model`, `backend_model`, `backend_type`, `backend_table`, `frontend_model`, `frontend_input`, frontend_label`, `frontend_class`, `source_model`, `is_required`, `is_user_defined`, `default_value`, `is_unique`, `note`)
values(1, 'accounttype', '', '', 'varchar', '', '', 'select', 'Account Type', '', '', 0, 0, '', 0,''),
(1, 'companyname', '', '', 'varchar', '', '', 'text', 'Company Name', '', '', 0, 0, '', 0,'');
That’s all. Try and let me know if you face any complexity.
Like this you can add extra field(s) in any magento pages as well.
Oh great tutorial!!! It’s help me a lot to learn Magento.
Also http://www.php-example.com helps me to learn PHP, MySQL, CakePHP and Oracle with ready made code examples.
Kelly Blue
Web Developer, University of Technology, Sydney, Australia
Hello, I used the code you have written but the problem that I ran into is that if I need to show the data in magento backend then what code would be used. Right now the front end is capturing the data in one extra field that we created and showing in database but not printing in magento backend.
Thanks.
So, how would I add a field (just like the gender field) to the admin side to show under the Account Information ? I added the xml code and the database code (similar to what the gender has) but the field doesn’t show up anywhere…
Thanks
HI,
This has worked very well.. But I am unsure how to get the new collected data to show up on the manage customers section in the admin area?
Thanks,
Joe
@Joe, I have the same trouble, Moinul can you help please?
Hi! Everyone I want to add custom fields on the customer registration page by overriding the base classes not by editing the core files of magento can someone tell me how can i do this??????
Create your own module as it override customer module and put your modified customer_account fieldsets xml block in etc/config.xml file. Hope it will work. For more help I remain. Thanks!
sir tell clearly step by step because i am new user to magento
HI! i have some problem in saving the values from my custom module i have created a customized registration page from which the values are not getting saved in backend can u please tell me whats the problem…..
*__(‘Employee Id’) ?>
<input type="text" name="employee_id" id="employee_id" value="htmlEscape($this->getFormData()->getEmployee_Id()) ?>” title=”__(‘Employee Id’) ?>” class=”input-text validate-employee_id required-entry”/>
Hey , I want to show the new field with value in manage customers option backend. So how can i do that?