2011-12-07 2 views
0

Я пробовал каждый учебник в Интернете, я задал здесь вопросы и получил хорошие ответы, которые я принял и последовал за ними. Я создал модули, изменил основные файлы, установил различные версии magento, но не имеет значения, что я делаю, я не могу получить что-нибудь, что я ДОЛЖЕН БЫТЬ ЗАПУСКАЕМ В БАЗЕ ДАННЫХ!Пользовательские атрибуты клиента не сохраняются в базе данных Magento?

Я просто хочу создать пользовательское поле в новой форме учетной записи и сохранить ее в базе данных, мне все равно, где?

+0

возможный дубликат [Magento - добавить атрибут объекта клиента] (HTTP: // StackOverflow .com/questions/6717241/magento-add-attribute-to-customer-entity) –

ответ

2

У меня была такая же проблема, и это связано с использованием прописной буквы в имени вашего атрибута.

Если вы используете только строчные буквы, все будет сохранено просто отлично.

0

сделать скрипт установки, как это:

<?php 

$installer = $this; 
$installer->startSetup(); 

$eav = new Mage_Eav_Model_Entity_Setup('core_setup'); 

$eav->addAttribute('customer', 'my_property', array(
    'label'  => 'My Property', 
    'type'  => 'varchar', 
    'input'  => 'text', 
    'visible' => true, 
    'required' => true, 
    'position' => 1, 
)); 

$installer->endSetup(); 

Тогда вы должны быть в состоянии добавить my_property в качестве входного сигнала на Новой форме клиента.

Подробнее о EAV в Alan Storm's Blog

+0

Я могу добавить my_property к атрибуту eav, используя такие сценарии, без проблем, я могу добавить приятные формы в интерфейс и поставить правильный код на месте, но ничего не сохраняет в базе данных, я пробовал все, что это делает мой орех, я не понимаю, почему? ? кажется, так просто, – Ledgemonkey

0

Проверьте эти таблицы MySQL, чтобы убедиться, что вы новый атрибут EAV был вставлен правильно. Имя атрибута должно быть в eav_attribute со всеми настройками атрибута и новым атрибутом_id. Новый атрибут_id должен быть в новых записях в этих трех таблицах: customer_eav_attribute, customer_eav_attribute_website, customer_form_attribute.

В customer_eav_attribute, customer_eav_attribute_website убедитесь, что is_visible поле устанавливается равным 1.

Если все это проверяет, отчет обратно сбросами 4 новых строк я только что говорил, чтобы мы могли проверить все остальное, что может быть неправильно в БД. Недавно я добавил новые атрибуты Magento 1.6.1, и я чуть не разорвал свои волосы, но в конце концов работал.

+0

спасибо за вашу помощь и извините за задержку в ответе, я должен был пойти и установить новый парик !!! – Ledgemonkey

+0

Новый идентификатор атрибута находится в eav_attribute и customer_eav_attribute, но не в других и видимы, в таблице _website нет записей? Одна из моих попыток: мне удалось получить идентификатор в таблице _form_arrribute (см. Ссылку) http://screencast.com/t/es5o3CApIDwn http://screencast.com/t/tujQ48spW http://screencast.com/t/onF5tA5Na Надеюсь, вы сможете помочь !!! Еще раз спасибо – Ledgemonkey

+0

'customer_form_attribute' отлично выглядит,' customer_eav_attribute' выглядит отлично. Я ошибался, вам нужно только «customer_eav_attribute_website», если это несколько хранилищ. Какую версию Magento вы используете? Сохраняется ли какая-либо из школ, детских имен или полей вкуса? – georgiecasey

0

Когда я haved эта проблема becaus отсутствовал код, как этот

$installer->addAttribute("empresas", "email", array(
    "type" => "varchar", 
    "backend" => "", 
    "label" => "Email", 
    "input" => "text", 
    "source" => "", 
    "visible" => true, 
    "required" => true, 
    "default" => "", 
    "frontend" => "", 
    "unique" => false 
)); 

$attribute = Mage::getSingleton("eav/config")->getAttribute("empresas", "email"); 


$used_in_forms = array(); 

$used_in_forms[] = "adminhtml_empresas"; 

$attribute->setData("used_in_forms", $used_in_forms) 
     ->setData("is_used_for_customer_segment", false) 
     ->setData("is_system", 0) 
     ->setData("is_user_defined", 0) 
     ->setData("is_visible", 1) 
     ->setData("sort_order", 100) 
; 
$attribute->save(); 

в моей установки скрипта после $installer->installEntities();

Смежные вопросы