Вече не могат да се добавят регистрационни полета в 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: '. (низ)$attribute->getAttributeCode());

след ред 371 в app/code/core/Mage/Customer/Model/Form.php и ще видите всички използвани атрибути в системния журнал на mage. (валидно за 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

За информация на всички, те премахнаха „специалния код“ в изданието на общността, който показва всички персонализирани атрибути. Използвам предприятие и обмисляхме издание на общността поради спестяванията. Това е едно от препятствията, които ще трябва да преодолеем.

Не отговаря на въпроса, но вероятно обяснява защо са го премахнали от безплатното издание. Кодът за показването им напълно липсва в темата.

person CarComp    schedule 02.11.2015