Adding custom registration fields in magento 1.5

怎甘沉沦 提交于 2020-01-03 02:53:14

问题


i am trying to add a couple of custom fields to the registration page. After going though various posts about this topic i tried to create a module for this. I see that my 2 custom fields are added to the eav_attribute and eav_entity_attribute tables. I also see that the entity_type_id is set to 1 which is customer for my entries. But if i add any data during registration for these fields its not saved to the table customer_entity_varchar . Here is my code: /etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Foostor_Extcustomerfields>
            <version>0.1.0</version>
        </Foostor_Extcustomerfields>
    </modules>
<!--    <frontend>  
        <routers>
            <pws_extshipping>
                <use>standard</use>
                <args>
                    <module>PWS_ExtShipping</module>
                    <frontName>pws_extshipping</frontName>
                </args>
            </pws_extshipping>
        </routers>      
        <layout>
            <updates>
                <pws_extcustomerfields module="PWS_ExtCustomerFields">
                    <file>pws_extcustomerfields.xml</file>
                </pws_extcustomerfields>
            </updates>
        </layout>        
    </frontend>  -->
    <global> 
        <models>
            <foostor_extcustomerfields>
                <class>Foostor_Extcustomerfields_Model</class>
            </foostor_extcustomerfields>
        </models>
        <resources>
            <foostor_extcustomerfields_setup>
                <setup>
                    <module>Foostor_Extcustomerfields</module>                    
                    <class>Foostor_Extcustomerfields_Model_Entity_Setup</class>
                </setup>
                <connection>
                    <use>core_setup</use>
                </connection>
            </foostor_extcustomerfields_setup>
            <foostor_extcustomerfields_write>
                <connection>
                    <use>core_write</use>
                </connection>
            </foostor_extcustomerfields_write>
            <foostor_extcustomerfields_read>
                <connection>
                    <use>core_read</use>
                </connection>
            </foostor_extcustomerfields_read>     
        </resources>
        <blocks>     
            <foostor_extcustomerfields>
                <class>Foostor_Extcustomerfields_Block</class>
            </foostor_extcustomerfields>    
        </blocks>       
        <helpers>
            <foostor_extcustomerfields>
                <class>Foostor_Extcustomerfields_Helper</class>
            </foostor_extcustomerfields>            
        </helpers>
        <fieldsets>
            <customer_account> 
                <registration_number><create>1</create><update>1</update></registration_number>
                <registration_comment><create>1</create><update>1</update></registration_comment>
            </customer_account>
        </fieldsets>  
    </global>    
</config>

/Model/Entity/Setup.php:

<?php
class Foostor_Extcustomerfields_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup
{


    public function getDefaultEntities()
    {

        $defaultEntities = parent::getDefaultEntities();

        $defaultEntities['customer']['attributes']['registration_number'] = array(
                        'label'        => 'Company Registration Number',
                        'visible'      => 1,
                        'required'     => 1,
                        'position'     => 1,
                    );              

        $defaultEntities['customer']['attributes']['registration_comment'] = array(
                        'label'        => 'Comment',
                        'visible'      => 1,
                        'input'        => 'textarea',
                        'required'     => 1,
                        'position'     => 1,
                    );                          

        return $defaultEntities;
    }

}

/sql/foostor_extcustomerfields_setup/mysql4-install-0.1.0.php:

<?php
$installer = $this;
/* @var $installer PWS_ExtCustomerFields_Model_Entity_Setup */

$installer->startSetup();

$installer->addAttribute('customer', 'registration_number', array(
    'label'        => 'Company Registration Number',
    'visible'      => 1,
    'required'     => 1,
    'position'     => 1,
));

$installer->addAttribute('customer', 'registration_comment', array(
    'label'        => 'Comment',
    'visible'      => 1,
    'input'        => 'textarea',
    'required'     => 0,
    'position'     => 1,
));


$installer->endSetup();

I have added the required code to the register.phtml and edit.phtml file too to display the fields that i have added. What do i need to add to save the data from the additional fields to the database and be able to retrieve that data? Apologize for pasting the code here. Thanks.


回答1:


You have also to register the attribute_id of new created attributes to the customer_form_attribute, so Magento knows where things are :-)

In your case you have to put this in your setup file: (Example taken form the Debit Payment Module)

// Get Customer Type ID
$read = Mage::getSingleton('core/resource')->getConnection('core_read');
$eid = $read->fetchRow(
    "select entity_type_id from {$this->getTable('eav_entity_type')} where entity_type_code = 'customer'"
);
$customer_type_id = $eid['entity_type_id'];

// Save Attribute to the customer_form_attribute
$attribute = $eavConfig->getAttribute($customer_type_id, 'registration_number');

// Here is where you determine in wich areas of magento the attributes are used
$attribute->setData('used_in_forms', array('customer_account_edit', 'customer_account_create', 'adminhtml_customer'));
$attribute->save();

Hope this helps :-)




回答2:


Or use this:

  1. Supports fields on Create Customer Account page
  2. Supports fields on Edit Customer Account page
  3. Supports fields on Checkout Registration page: standart onepage checkout - not a thirdparty onestep.

http://www.magentocommerce.com/magento-connect/catalog/product/view/id/16093/ http://www.magazento.com/english/magento-ext/magazento-extensions/custom-registration-filelds



来源:https://stackoverflow.com/questions/6993392/adding-custom-registration-fields-in-magento-1-5

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!