Больше нельзя добавлять поля регистрации в Magento 1.4.2.0

Я уже использовал это руководство для добавление полей регистрации на страницу регистрации Magento.

Это всегда работало, но с тех пор, как я обновился до Magento 1.4.2.0, это больше не работает. Атрибуты, которые я добавляю, больше не отображаются на вкладке информации о клиентах в бэкэнде, как это было раньше, и не сохраняются. Однако атрибуты устанавливаются в базу данных нормально. Я подумал, что, возможно, часть config.xml изменилась, но я сравнил ее с основным клиентом, и атрибуты по-прежнему отображаются одинаково:

<flavour><create>1</create><update>1</update></flavour>

Что-то должно было измениться с последней бета-версии 1.4.2, потому что тогда все работало нормально. Если у кого-то есть какие-либо идеи, я был бы очень признателен, и я наконец-то смог выспаться! Заранее спасибо!


person Justin    schedule 28.12.2010    source источник


Ответы (4)


Я боролся с этим довольно долго, пока не понял это. Начиная с версии 1.4.2, атрибуты, отображаемые в форме клиента администратора, должны находиться в таблице customer_form_attribute.
Вы можете добавить их при обновлении настроек вашего модуля с помощью этого кода:

$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer', 'your_attributes_code');
$attribute->setData('used_in_forms', array('adminhtml_customer'));
$attribute->save();

Надеюсь, это поможет.

person OSdave    schedule 02.01.2011
comment
отличный! Большое спасибо, теперь поля отображаются в бэкэнде. Я все еще не могу получить поля для сохранения значения во внешнем интерфейсе. Удалось ли вам это осуществить? Они будут сохранены, если они будут введены в бэкэнд, но не будут сохранены, когда клиент будет создан на странице регистрации. - person Justin; 03.01.2011
comment
на самом деле мой атрибут не заполняется клиентом, он не отображается в формах внешнего интерфейса, он настраивается наблюдателем. Код, который я добавил, предназначен для просмотра ввода в формах администратора: если вы посмотрите на таблицу customer_form_attribute, вы увидите, что возможны другие значения, возможно, вам нужно добавить значение формы внешнего интерфейса. - person OSdave; 04.01.2011
comment
Спасибо, Дэвид, я думаю, вы указали мне правильное направление! Я опубликую свое окончательное решение, если и когда я это выясню. - person Justin; 04.01.2011

Очень полезные советы выше, спасибо, Дэвид!

Чтобы новые атрибуты можно было сохранить во внешнем интерфейсе (зарегистрируйте и отредактируйте), просто разверните второй массив параметров $attribute->setData следующим образом:

$eavConfig = Mage::getSingleton('eav/config');
$attribute = $eavConfig->getAttribute('customer', 'flavour');
$attribute->setData('used_in_forms',   array('customer_account_edit',
                                             'customer_account_create',
                                             'adminhtml_customer'));
$attribute->save();

После этого вы найдете 3 новые записи в таблице customer_form_attribute вместо одной.

Если вы хотите проверить это до и после этого изменения, просто вставьте

Mage::log('attrib: '. (string)$attribute->getAttributeCode());

после строки 371 в app/code/core/Mage/Customer/Model/Form.php, и вы увидите все используемые атрибуты в системном журнале mage. (действительно для мага 1.4.2.0)

person Folker Schellenberg    schedule 06.01.2011

Попробуй это :

http://www.magento.cc/custom-accountregistration-fields.html

person Bizboss    schedule 30.12.2010
comment
Спасибо за ответ. Я тоже пробовал это, и, к сожалению, это тоже не работает. Я не могу понять, что изменилось, из-за чего это больше не работает. - person Justin; 30.12.2010

К сведению всех, они удалили «специальный код» в версии сообщества, который показывает все пользовательские атрибуты. Я использую Enterprise, и мы рассматривали вариант Community Edition из-за экономии. Это одно из препятствий, которое нам предстоит преодолеть.

Не отвечает на вопрос, но, вероятно, объясняет, почему они удалили его из бесплатной версии. Код для их отображения полностью отсутствует в теме.

person CarComp    schedule 02.11.2015