2011-11-05 88 views
2

我已经创建了一个新的字段调用子名,这是一个帐户注册表单上的一个重要字段。无法将Magento 1.6商店注册页面上的自定义字段导入到mysql数据库中。

我:

新增形式进入register.phtml确定并显示在表格上。

把这个代码放到/local/Mage/Customer/etc/config.xml

   <childname> 
       <create>1</create> 
       <update>1</update> 
       </childname> 

将此添加到/local/Mage/Customer/Model/Resource/Setup.php

    'childname'   => array( 
      'type'    => 'varchar',      
        'label'    => 'Please Enter Childs Name', 
        'input'    => 'text', 
        'required'   => true, 
        'visible'   => true, 

我已经在eav_attribute表中添加了attribute_code子类名设置为varchar

我已经运行了注册页面并查看了customer_entity_varchar,但它没有被存储?

我错过了一些代码的地方,不知道哪个文件发送数据到数据库?

任何帮助将不胜感激!

在此先感谢

运行Magento的1.6

回答

5

一件事,我认为缺少的是,你需要告诉这个属性在形式使用Magento的,所以它会被处理。基本上,您需要以各种形式包含它,如'customer_account_create','customer_account_edit','checkout_register','adminhtml_customer'。 所以,你需要把升级“SQL文件”是这样的:

$usedInForms = array('customer_account_create', 'customer_account_edit', 'checkout_register', 'adminhtml_customer'); 
$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'childname'); 
$oAttribute->setData('used_in_forms', $usedInForms); 
$oAttribute->save(); 

所以,我只是做我自己对我的一个客户,这是actaully很简单。你只需要在你的模块中的3个文件,并编辑几个phtml。

  1. etc/config.xml,一如既往在Magento中,您需要配置您的模块。在我们的例子中,我们只需要配置资源。这里是我的整个config.xml文件:

    <config> 
        <modules> 
         <Osdave_Custattr> 
          <version>0.1.0</version> 
         </Osdave_Custattr> 
        </modules> 
    
        <global> 
         <resources> 
          <custattr_setup> 
           <setup> 
            <module>Osdave_Custattr</module> 
            <class>Mage_Customer_Model_Entity_Setup</class> 
           </setup> 
           <connection> 
            <use>core_setup</use> 
           </connection> 
          </custattr_setup> 
          <custattr_write> 
           <connection> 
            <use>core_write</use> 
           </connection> 
          </custattr_write> 
          <custattr_read> 
           <connection> 
            <use>core_read</use> 
           </connection> 
          </custattr_read> 
         </resources> 
        </global> 
    </config> 
    
  2. SQL/custattr_setup/mysql4安装-0.1.0.php,这是它增加了属性到EAV属性表文件。正如你在config.xml中看到的那样,它延伸到Mage_Customer_Model_Entity_Setup。同样,整个文件:

    <?php 
    
    $installer = $this; 
    
    $installer->startSetup(); 
    
    $this->addAttribute('customer', 'erp_customer_id', array(
        'type' => 'varchar', 
        'input' => 'text', 
        'label' => 'ERP Customer ID', 
        'global' => 1, 
        'visible' => 1, 
        'required' => 0, 
        'user_defined' => 1, 
        'default' => null, 
        'visible_on_front' => 1 
    )); 
    
    
    if (version_compare(Mage::getVersion(), '1.6.0', '<=')) { 
        $customer = Mage::getModel('customer/customer'); 
        $attrSetId = $customer->getResource()->getEntityType()->getDefaultAttributeSetId(); 
        $this->addAttributeToSet('customer', $attrSetId, 'General', 'erp_customer_id'); 
    } 
    
    if (version_compare(Mage::getVersion(), '1.4.2', '>=')) { 
        Mage::getSingleton('eav/config') 
          ->getAttribute('customer', 'erp_customer_id') 
          ->setData('used_in_forms', array('adminhtml_customer', 'customer_account_create', 'customer_account_edit', 'checkout_register')) 
          ->save(); 
    } 
    
    $installer->endSetup(); 
    
  3. 激活xml文件,应用程序的/ etc /模块/ Osdave_Custattr.xml:

    <?xml version="1.0"?> 
    <config> 
        <modules> 
         <Osdave_Custattr> 
          <active>true</active> 
          <codePool>local</codePool> 
         </Osdave_Custattr> 
        </modules> 
    </config> 
    
  4. ,现在我只需要编辑,我想了PHTML文件显示新的字段,即注册,编辑和结账注册。以下是我在我的应用程序/设计/前端/ mypackage中/ mydesign /永久/客户/表格/ register.phtml已经添加:

    <div class="fieldset"> 
        <h2 class="legend"><?php echo $this->__('ERP Account Information') ?></h2> 
        <ul class="form-list"> 
         <li> 
          <label for="erp_customer_id" class="required"><em>*</em><?php echo $this->__('ERP Customer ID') ?></label> 
          <div class="input-box"> 
           <input type="text" name="erp_customer_id" id="erp_customer_id" value="<?php echo $this->htmlEscape($this->getFormData()->getErpCustomerId()) ?>" title="<?php echo $this->__('ERP Customer ID') ?>" class="input-text" /> 
          </div> 
         </li> 
        </ul> 
    </div> 
    

    很重要的字段的名称属性的名称相匹配。

vo il,,当我注册该字段库存在分贝。
经过这个,可能对您来说最好的解决方案是获得您在开始编辑之前所做的db-and-files备份,并重现我的步骤。您必须更改名称以符合您的要求。

HTH

+0

@OSDdave非常感谢,wheres最好的地方放这段代码? – Ledgemonkey

+0

@Ledgemonkey最好的地方是app/code/local-or-community/YourNamespace/YourModule/sql/yourmodule_setup/mysql4-upgrade-0.1.0-0.1.1.php假设你的模块目前版本为0.1.0,而你的第一次安装将一行插入到core_resource中。但我并不完全确定,因为您对整个模块的信息很少。 – OSdave

+0

再次非常感谢您的帮助,我使用本地/法师/客户 - sql/customer_setup mysql4-upgrade-1.6.0.0-1.6.1.0.php我应该在本地创建一个新模块吗? – Ledgemonkey

相关问题