我在注册表单中添加了2个自定义属性,以收集前端客户的输入.
我的问题是来自前端注册表单的数据没有存储在数据库中.
我正在存储管理区域中为这些字段输入的任何数据,但我需要从客户处收集信息.这是我的代码:
app/code/local/Symphony/Khaos/sql/khaos_setup/mysql4-upgrade-0.1.12-0.1.13.php(是的,我试过几次这个权利;))
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute('customer', 'source', array(
'input' => 'text',
'type' => 'varchar',
'label' => 'Where did you hear about us?',
'visible' => 1,
'required' => 0,
'position' => 1,
'sort_order' => 80,
));
$installer->addAttribute('customer', 'practitioner_referrer', array(
'input' => 'text',
'type' => 'varchar',
'label' => 'Referring practitioner',
'visible' => 1,
'required' => 0,
'position' => 1,
'sort_order' => 80,
));
$installer->endSetup();
$customer = Mage::getModel('customer/attribute')->loadByCode('customer', 'source');
$forms= array('customer_account_edit', 'customer_account_create', 'adminhtml_customer', 'checkout_register');
$customer->setData('used_in_forms', $forms);
$customer->save();
$customer = Mage::getModel('customer/attribute')->loadByCode('customer', 'practitioner_referrer');
$forms= array('customer_account_edit', 'customer_account_create', 'adminhtml_customer', 'checkout_register');
$customer->setData('used_in_forms', $forms);
$customer->save();
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/交响乐/ Khaos /型号/实体/ Setup.php
<?php
class Symphony_Khaos_Model_Entity_Setup extends Mage_Customer_Model_Entity_Setup
{
public function getDefaultEntities(){
return array(
'source'=>array(
'type'=> 'static',
'label'=> 'source',
'visiable' => true,
'required' => false,
'sort_order' => 80,
),
'practitioner_referrer'=>array(
'type'=> 'static',
'label'=> 'practitioner_referrer',
'visiable' => true,
'required' => false,
'sort_order' => 80,
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/交响乐/ Khaos的/ etc/config.xml中
<?xml version="1.0"?>
<!--
/**
* @category Symphony
* @package Symphony_Khaos
* @author ModuleCreator
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
-->
<config>
<modules>
<Symphony_Khaos>
<version>0.1.13</version>
</Symphony_Khaos>
</modules>
<frontend>
<routers>
<khaos>
<use>standard</use>
<args>
<module>Symphony_Khaos</module>
<frontName>khaos</frontName>
</args>
</khaos>
</routers>
<layout>
<updates>
<khaos>
<file>khaos.xml</file>
</khaos>
</updates>
</layout>
</frontend>
<admin>
<routers>
<khaos>
<use>admin</use>
<args>
<module>Symphony_Khaos</module>
<frontName>khaos</frontName>
</args>
</khaos>
</routers>
</admin>
<adminhtml>
<menu>
<khaos module="khaos">
<title>Khaos</title>
<sort_order>71</sort_order>
<children>
<items module="khaos">
<title>Manage Items</title>
<sort_order>0</sort_order>
<action>khaos/adminhtml_khaos</action>
</items>
</children>
</khaos>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<Symphony_Khaos>
<title>Khaos Module</title>
<sort_order>10</sort_order>
</Symphony_Khaos>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<khaos>
<file>khaos.xml</file>
</khaos>
</updates>
</layout>
</adminhtml>
<global>
<models>
<khaos>
<class>Symphony_Khaos_Model</class>
<resourceModel>khaos_mysql4</resourceModel>
</khaos>
<khaos_mysql4>
<class>Symphony_Khaos_Model_Mysql4</class>
<entities>
<khaos>
<table>khaos</table>
</khaos>
</entities>
</khaos_mysql4>
</models>
<resources>
<khaos_setup>
<setup>
<module>Symphony_Khaos</module>
<class>Symphony_Khaos_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</khaos_setup>
<khaos_write>
<connection>
<use>core_write</use>
</connection>
</khaos_write>
<khaos_read>
<connection>
<use>core_read</use>
</connection>
</khaos_read>
</resources>
<blocks>
<khaos>
<class>Symphony_Khaos_Block</class>
</khaos>
</blocks>
<helpers>
<khaos>
<class>Symphony_Khaos_Helper</class>
</khaos>
</helpers>
<fieldsets>
<customer_account>
<source><create>1</create><update>1</update></source>
<practitioner_referrer><create>1</create><update>1</update></practitioner_referrer>
</customer_account>
</fieldsets>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
应用程序/设计/前端/ metabolics /默认/模板/永久/结算/ onepage/billing.phtml
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License (AFL 3.0)
* that is bundled with this package in the file LICENSE_AFL.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/afl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category design
* @package base_default
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
*/
/** @var Mage_Checkout_Block_Onepage_Billing $this */
?>
<form id="co-billing-form" action="">
<fieldset>
<ul class="form-list">
<?php if ($this->customerHasAddresses()): ?>
<li class="wide">
<label for="billing-address-select"><?php echo $this->__('Select a billing address from your address book or enter a new address.') ?></label>
<div class="input-box">
<?php echo $this->getAddressesHtmlSelect('billing') ?>
</div>
</li>
<?php endif; ?>
<li id="billing-new-address-form"<?php if ($this->customerHasAddresses()): ?> style="display:none;"<?php endif; ?>>
<fieldset>
<input type="hidden" name="billing[address_id]" value="<?php echo $this->getAddress()->getId() ?>" id="billing:address_id" />
<ul>
<li class="fields"><?php echo $this->getLayout()->createBlock('customer/widget_name')->setObject($this->getAddress()->getFirstname() ? $this->getAddress() : $this->getQuote()->getCustomer())->setForceUseCustomerRequiredAttributes(!$this->isCustomerLoggedIn())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?></li>
<li class="fields">
<div class="field">
<label for="billing:company"><?php echo $this->__('Company') ?></label>
<div class="input-box">
<input type="text" id="billing:company" name="billing[company]" value="<?php echo $this->escapeHtml($this->getAddress()->getCompany()) ?>" title="<?php echo $this->__('Company') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('company') ?>" />
</div>
</div>
<?php if(!$this->isCustomerLoggedIn()): ?>
<div class="field">
<label for="billing:email" class="required"><em>*</em><?php echo $this->__('Email Address') ?></label>
<div class="input-box">
<input type="text" name="billing[email]" id="billing:email" value="<?php echo $this->escapeHtml($this->getAddress()->getEmail()) ?>" title="<?php echo $this->__('Email Address') ?>" class="input-text validate-email required-entry" />
</div>
</div>
<?php endif; ?>
</li>
<?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('street'); ?>
<li class="wide">
<label for="billing:street1" class="required"><em>*</em><?php echo $this->__('Address') ?></label>
<div class="input-box">
<input type="text" title="<?php echo $this->__('Street Address') ?>" name="billing[street][]" id="billing:street1" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet(1)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
</div>
</li>
<?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?>
<?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?>
<li class="wide">
<div class="input-box">
<input type="text" title="<?php echo $this->__('Street Address %s', $_i) ?>" name="billing[street][]" id="billing:street<?php echo $_i ?>" value="<?php echo $this->escapeHtml($this->getAddress()->getStreet($_i)) ?>" class="input-text <?php echo $_streetValidationClass ?>" />
</div>
</li>
<?php endfor; ?>
<?php if ($this->helper('customer/address')->isVatAttributeVisible()) : ?>
<li class="wide">
<label for="billing:vat_id"><?php echo $this->__('VAT Number') ?></label>
<div class="input-box">
<input type="text" id="billing:vat_id" name="billing[vat_id]" value="<?php echo $this->escapeHtml($this->getAddress()->getVatId()) ?>" title="<?php echo $this->__('VAT Number') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('vat_id') ?>" />
</div>
</li>
<?php endif; ?>
<li class="fields">
<div class="field">
<label for="billing:city" class="required"><em>*</em><?php echo $this->__('City') ?></label>
<div class="input-box">
<input type="text" title="<?php echo $this->__('City') ?>" name="billing[city]" value="<?php echo $this->escapeHtml($this->getAddress()->getCity()) ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('city') ?>" id="billing:city" />
</div>
</div>
<div class="field">
<label for="billing:region_id" class="required"><em>*</em><?php echo $this->__('State/Province') ?></label>
<div class="input-box">
<select id="billing:region_id" name="billing[region_id]" title="<?php echo $this->__('State/Province') ?>" class="validate-select" style="display:none;">
<option value=""><?php echo $this->__('Please select region, state or province') ?></option>
</select>
<script type="text/javascript">
//<![CDATA[
$('billing:region_id').setAttribute('defaultValue', "<?php echo $this->getAddress()->getRegionId() ?>");
//]]>
</script>
<input type="text" id="billing:region" name="billing[region]" value="<?php echo $this->escapeHtml($this->getAddress()->getRegion()) ?>" title="<?php echo $this->__('State/Province') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('region') ?>" style="display:none;" />
</div>
</div>
</li>
<li class="fields">
<div class="field">
<label for="billing:postcode" class="required"><em>*</em><?php echo $this->__('Zip/Postal Code') ?></label>
<div class="input-box">
<input type="text" title="<?php echo $this->__('Zip/Postal Code') ?>" name="billing[postcode]" id="billing:postcode" value="<?php echo $this->escapeHtml($this->getAddress()->getPostcode()) ?>" class="input-text validate-zip-international <?php echo $this->helper('customer/address')->getAttributeValidationClass('postcode') ?>" />
</div>
</div>
<div class="field">
<label for="billing:country_id" class="required"><em>*</em><?php echo $this->__('Country') ?></label>
<div class="input-box">
<?php echo $this->getCountryHtmlSelect('billing') ?>
</div>
</div>
</li>
<li class="fields">
<div class="field">
<label for="billing:telephone" class="required"><em>*</em><?php echo $this->__('Telephone') ?></label>
<div class="input-box">
<input type="text" name="billing[telephone]" value="<?php echo $this->escapeHtml($this->getAddress()->getTelephone()) ?>" title="<?php echo $this->__('Telephone') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('telephone') ?>" id="billing:telephone" />
</div>
</div>
<div class="field">
<label for="billing:fax"><?php echo $this->__('Fax') ?></label>
<div class="input-box">
<input type="text" name="billing[fax]" value="<?php echo $this->escapeHtml($this->getAddress()->getFax()) ?>" title="<?php echo $this->__('Fax') ?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('fax') ?>" id="billing:fax" />
</div>
</div>
</li>
<?php if(!$this->isCustomerLoggedIn()): ?>
<?php $_dob = $this->getLayout()->createBlock('customer/widget_dob') ?>
<?php $_gender = $this->getLayout()->createBlock('customer/widget_gender') ?>
<?php if ($_dob->isEnabled() || $_gender->isEnabled()): ?>
<li class="fields">
<?php if ($_dob->isEnabled()): ?>
<div class="field">
<?php echo $_dob->setDate($this->getQuote()->getCustomerDob())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
</div>
<?php endif; ?>
<?php if ($_gender->isEnabled()): ?>
<div class="field">
<?php echo $_gender->setGender($this->getQuote()->getCustomerGender())->setFieldIdFormat('billing:%s')->setFieldNameFormat('billing[%s]')->toHtml() ?>
</div>
<?php endif ?>
</li>
<?php endif ?>
<?php if ($this->isTaxvatEnabled()):?>
<li><?php echo $this->getTaxvatHtml() ?></li>
<?php endif; ?>
<div class="fieldset">
<ul class="form-list">
<li class="fields">
<div class="field">
<label for="source" class="required"><em>*</em><?php echo $this->__('Where did you hear about us?') ?></label>
<div class="input-box">
<input type="text" name="source" id="source" title="<?php echo $this->__('source') ?>" class="input-text required-entry" />
</div>
</div>
<div class="field">
<label for="practitioner_referrer"><?php echo $this->__('Were you referrered by a practitioner, if so, who?') ?></label>
<div class="input-box">
<input type="text" name="practitioner_referrer" id="practitioner_referrer" title="<?php echo $this->__('practitioner_referrer') ?>" class="input-text" />
</div>
</div>
</li>
</ul>
</div>
<li class="fields" id="register-customer-password">
<div class="field">
<label for="billing:customer_password" class="required"><em>*</em><?php echo $this->__('Password') ?></label>
<div class="input-box">
<input type="password" name="billing[customer_password]" id="billing:customer_password" title="<?php echo $this->__('Password') ?>" class="input-text required-entry validate-password" />
</div>
</div>
<div class="field">
<label for="billing:confirm_password" class="required"><em>*</em><?php echo $this->__('Confirm Password') ?></label>
<div class="input-box">
<input type="password" name="billing[confirm_password]" title="<?php echo $this->__('Confirm Password') ?>" id="billing:confirm_password" class="input-text required-entry validate-cpassword" />
</div>
</div>
</li>
<?php echo $this->getChildHtml('persistent.remember.me'); ?>
<?php endif; ?>
<?php if ($this->isCustomerLoggedIn() && $this->customerHasAddresses()):?>
<li class="control">
<input type="checkbox" name="billing[save_in_address_book]" value="1" title="<?php echo $this->__('Save in address book') ?>" id="billing:save_in_address_book" onchange="if(window.shipping) shipping.setSameAsBilling(false);"<?php if ($this->getAddress()->getSaveInAddressBook()):?> checked="checked"<?php endif;?> class="checkbox" /><label for="billing:save_in_address_book"><?php echo $this->__('Save in address book') ?></label>
</li>
<?php else:?>
<li class="no-display"><input type="hidden" name="billing[save_in_address_book]" value="1" /></li>
<?php endif; ?>
<?php echo $this->getChildHtml('form.additional.info'); ?>
</ul>
<?php echo $this->getChildHtml('persistent.remember.me.tooltip'); ?>
</fieldset>
</li>
<?php if ($this->canShip()): ?>
<li class="control">
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_yes" value="1"<?php if ($this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to this address') ?>" onclick="$('shipping:same_as_billing').checked = true;" class="radio" /><label for="billing:use_for_shipping_yes"><?php echo $this->__('Ship to this address') ?></label></li>
<li class="control">
<input type="radio" name="billing[use_for_shipping]" id="billing:use_for_shipping_no" value="0"<?php if (!$this->isUseBillingAddressForShipping()) {?> checked="checked"<?php }?> title="<?php echo $this->__('Ship to different address') ?>" onclick="$('shipping:same_as_billing').checked = false;" class="radio" /><label for="billing:use_for_shipping_no"><?php echo $this->__('Ship to different address') ?></label>
</li>
<?php endif; ?>
</ul>
<?php if (!$this->canShip()): ?>
<input type="hidden" name="billing[use_for_shipping]" value="1" />
<?php endif; ?>
<div class="buttons-set" id="billing-buttons-container">
<p class="required"><?php echo $this->__('* Required Fields') ?></p>
<button type="button" title="<?php echo $this->__('Continue') ?>" class="button" onclick="billing.save()"><span><span><?php echo $this->__('Continue') ?></span></span></button>
<span class="please-wait" id="billing-please-wait" style="display:none;">
<img src="<?php echo $this->getSkinUrl('images/opc-ajax-loader.gif') ?>" alt="<?php echo $this->__('Loading next step...') ?>" title="<?php echo $this->__('Loading next step...') ?>" class="v-middle" /> <?php echo $this->__('Loading next step...') ?>
</span>
</div>
</fieldset>
</form>
<script type="text/javascript">
//<![CDATA[
var billing = new Billing('co-billing-form', '<?php echo $this->getUrl('checkout/onepage/getAddress') ?>address/', '<?php echo $this->getUrl('checkout/onepage/saveBilling') ?>');
var billingForm = new VarienForm('co-billing-form');
//billingForm.setElementsRelation('billing:country_id', 'billing:region', '<?php echo $this->getUrl('directory/json/childRegion') ?>', '<?php echo $this->__('Select State/Province...') ?>');
$('billing-address-select') && billing.newAddress(!$('billing-address-select').value);
var billingRegionUpdater = new RegionUpdater('billing:country_id', 'billing:region', 'billing:region_id', <?php echo $this->helper('directory')->getRegionJson() ?>, undefined, 'billing:postcode');
if ($('onepage-guest-register-button')) {
Event.observe($('onepage-guest-register-button'), 'click', function(event) {
var billingRememberMe = $('co-billing-form').select('#remember-me-box');
if (billingRememberMe.length > 0) {
if ($('login:guest') && $('login:guest').checked) {
billingRememberMe[0].hide();
} else if ($('login:register') && ($('login:register').checked || $('login:register').type == 'hidden')) {
billingRememberMe[0].show();
}
}
});
}
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
亲切的问候,
詹姆士
你的解决方案很好,它接近一个工作的解决方案,但它没有一些最后的接触.
请注意,客户可以通过两种方式注册 - 通过"注册"链接或在结账期间注册.您仅为Checkout流程提供了模板代码,因此我将仅讨论它."注册"链接的实现要简单得多,似乎在上面已经提供的文章中很好地描述了:http://www.fontis.com.au/blog/magento/know-more-about-your -customers-添加定制-注册的属性
好的,关于Checkout.当前解决方案的问题是:
billing[<attribute_name>]. 我们来处理这些问题.
模板文件的修复很简单 - 只需重命名输入,它们应该是:
...
<input type="text" name="billing[source]" id="source" title="<?php echo
$this->__('source') ?>" class="input-text required-entry" />
...
<input type="text" name="billing[practitioner_referrer]" id="practitioner_referrer"
title="<?php echo $this->__('practitioner_referrer') ?>" class="input-text" />
...
Run Code Online (Sandbox Code Playgroud)
这将使Magento在一个预期的位置找到输入的数据.
正确的sql文件(即mysql4-upgrade-0.1.12-0.1.13.php)应如下所示:
$installer->startSetup();
$installer->getConnection()->addColumn(
$installer->getTable('sales/quote'),
'customer_source',
array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'length' => '64K',
'comment' => 'Customer Source'
)
);
$installer->getConnection()->addColumn(
$installer->getTable('sales/quote'),
'customer_practitioner_referrer',
array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'length' => '64K',
'comment' => 'Customer Practitioner Referrer'
)
);
$installer->addAttribute('customer', 'source', array(
'input' => 'text',
'type' => 'varchar',
'label' => 'Where did you hear about us?',
'visible' => 1,
'required' => 0,
'position' => 1,
'sort_order' => 80
));
$installer->addAttribute('customer', 'practitioner_referrer',
array(
'input' => 'text',
'type' => 'varchar',
'label' => 'Referring practitioner',
'visible' => 1,
'required' => 0,
'position' => 1,
'sort_order' => 80
)
);
$installer->endSetup();
$customer = Mage::getModel('customer/attribute')->loadByCode('customer', 'source');
$forms= array('customer_account_edit', 'customer_account_create', 'adminhtml_customer', 'checkout_register');
$customer->setData('used_in_forms', $forms);
$customer->save();
$customer = Mage::getModel('customer/attribute')->loadByCode('customer', 'practitioner_referrer');
$forms= array('customer_account_edit', 'customer_account_create', 'adminhtml_customer', 'checkout_register');
$customer->setData('used_in_forms', $forms);
$customer->save();
Run Code Online (Sandbox Code Playgroud)
在该文件中,我们不仅创建Customer属性,还创建Quote表中的相应列,其中输入的值将在Checkout过程中存储.
字段集应包括将数据从客户转换为报价的规则,反之亦然.这就是config.xml应该是这样的:
<?xml version="1.0"?>
<!--
/**
* @category Symphony
* @package Symphony_Khaos
* @author ModuleCreator
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
-->
<config>
<modules>
<Symphony_Khaos>
<version>0.1.13</version>
</Symphony_Khaos>
</modules>
<frontend>
<routers>
<khaos>
<use>standard</use>
<args>
<module>Symphony_Khaos</module>
<frontName>khaos</frontName>
</args>
</khaos>
</routers>
<layout>
<updates>
<khaos>
<file>khaos.xml</file>
</khaos>
</updates>
</layout>
</frontend>
<admin>
<routers>
<khaos>
<use>admin</use>
<args>
<module>Symphony_Khaos</module>
<frontName>khaos</frontName>
</args>
</khaos>
</routers>
</admin>
<adminhtml>
<menu>
<khaos module="khaos">
<title>Khaos</title>
<sort_order>71</sort_order>
<children>
<items module="khaos">
<title>Manage Items</title>
<sort_order>0</sort_order>
<action>khaos/adminhtml_khaos</action>
</items>
</children>
</khaos>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<Symphony_Khaos>
<title>Khaos Module</title>
<sort_order>10</sort_order>
</Symphony_Khaos>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<khaos>
<file>khaos.xml</file>
</khaos>
</updates>
</layout>
</adminhtml>
<global>
<models>
<khaos>
<class>Symphony_Khaos_Model</class>
<resourceModel>khaos_mysql4</resourceModel>
</khaos>
<khaos_mysql4>
<class>Symphony_Khaos_Model_Mysql4</class>
<entities>
<khaos>
<table>khaos</table>
</khaos>
</entities>
</khaos_mysql4>
</models>
<resources>
<khaos_setup>
<setup>
<module>Symphony_Khaos</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</khaos_setup>
<khaos_write>
<connection>
<use>core_write</use>
</connection>
</khaos_write>
<khaos_read>
<connection>
<use>core_read</use>
</connection>
</khaos_read>
</resources>
<blocks>
<khaos>
<class>Symphony_Khaos_Block</class>
</khaos>
</blocks>
<helpers>
<khaos>
<class>Symphony_Khaos_Helper</class>
</khaos>
</helpers>
<fieldsets>
<customer_account>
<source><to_quote>customer_source</to_quote></source>
<practitioner_referrer><to_quote>customer_practitioner_referrer</to_quote></practitioner_referrer>
</customer_account>
<checkout_onepage_quote>
<customer_source><to_customer>source</to_customer></customer_source>
<customer_practitioner_referrer><to_customer>practitioner_referrer</to_customer></customer_practitioner_referrer>
</checkout_onepage_quote>
</fieldsets>
</global>
</config>
Run Code Online (Sandbox Code Playgroud)
注意两件事:
<create>和<update>指令被删除,因为Checkout注册不需要它们.如果需要,您可以将它们添加回去.Symphony_Khaos_Model_Entity_Setup
已被删除,有利于Mage_Customer_Model_Entity_Setup.客户设置模型足以完成所有任务.具有自定义设置模型的文件可能完全被删除.如果您需要其他任务,则可以返回自定义模型.瞧 - 这就是全部!这些修复程序将使客户在Checkout注册期间看到两个附加字段.在提交订单时,数据将保存到他的个人资料中.
但是,实现并不是最好的,因为它基于这种方法,它有一些缺点.该方法需要在Quote表中存储数据,而这些数据条目与Quote模型无关.他们只是将它用作运输工具.此外,将来添加新属性需要做太多工作 - 必须对sql文件,配置和模板进行修改.
一种正确的方法是构建一个更抽象的实现.解决方案应将属性数据存储在EAV或自定义表中,并根据需要通过观察事件将其添加到Customer/Quote模型.模板应该显示一个通用的属性列表,可能需要特殊的渲染模型来处理那些需要特殊设计的模型.
但是对于2个属性,你的方法很好.
祝你好运与Magento进一步合作:)
| 归档时间: |
|
| 查看次数: |
8781 次 |
| 最近记录: |