Добрый день!
Меня интересует такой вопрос.
Можно ли при регистрации нового пользователя на странице /customer/account/create/ добавить еще поля. Я хочу чтоб там было поле "Фирма" например.
Наперед благодарен.
Как наделить покупателей дополнительной характеристикой?
04.04.2012 10:47
Можно, конечно.
Например:
Далее потребуется бизнес-логика, валидаторы, поддержка обмена данными со внешними источниками т.п.
Например:
/** @var Df_Customer_Model_Resource_Setup $this */
$this->startSetup();
/* @var Mage_Customer_Helper_Address $addressHelper */
$addressHelper = Mage::helper('customer/address');
/** @var Mage_Core_Model_Store $store */
$store = Mage::app()->getStore(Mage_Core_Model_App::ADMIN_STORE_ID);
/* @var Mage_Eav_Model_Config $eavConfig */
$eavConfig = Mage::getSingleton('eav/config');
// update customer address user defined attributes data
$attributes = array (
/**
* Обратите внимание, что идентификатор характеристики
* должен содержать не более 30 символов
*/
'df_account_number' => array (
'label' => 'Номер р/c'
,
'frontend_label' => 'Номер р/c'
,
'type' => 'varchar'
,
'backend_type' => 'varchar'
,
'input' => 'text'
,
'frontend_input' => 'text'
,
'is_user_defined' => 1
,
'system' => false
,
'visible' => true
,
'required' => false
,
'multiline_count' => 0
,
'validate_rules' => array (
'max_text_length' => 255
,
'min_text_length' => 1
)
,
'sort_order' => 140
)
);
foreach ($attributes as $attributeCode => $data) {
/** @var string $attributeCode */
/** @var array $data */
/** @var Mage_Eav_Model_Entity_Attribute_Abstract $attribute */
$attribute = $eavConfig->getAttribute('customer_address', $attributeCode);
$attribute->setData('website', $store->getWebsite());
$attribute->addData($data);
$attribute
->setData(
'used_in_forms'
,
array (
'adminhtml_customer_address'
,
'customer_address_edit'
,
'customer_register_address'
)
)
;
$attribute->save();
}
$this->run ("
ALTER TABLE {$this->getTable('sales_flat_quote_address')}
ADD COLUMN `df_account_number`
VARCHAR(255)
CHARACTER SET utf8
DEFAULT NULL
;
");
/**
* Таблица sales_flat_order_address отсутствует в Magento 1.4.0.1
* (и, может быть, в некоторых чуть более поздних версиях)
*/
/** @var Varien_Db_Adapter_Pdo_Mysql $connection */
$connection = $this->getConnection();
/** @var bool $tableExists */
$tableExists = false;
try {
/** @var array $tableDescription */
$tableDescription = $connection->describeTable ($this->getTable('sales_flat_order_address'));
$tableExists = !empty ($tableDescription);
}
catch (Exception $e){
}
if ($tableExists) {
$this->run ("
ALTER TABLE {$this->getTable('sales_flat_order_address')}
ADD COLUMN `df_account_number`
VARCHAR(255)
CHARACTER SET utf8
DEFAULT NULL
;
");
}
$this->endSetup();Далее потребуется бизнес-логика, валидаторы, поддержка обмена данными со внешними источниками т.п.

Вход
Регистрация
Помощь

