Magento EE 1.11 - атрибуты клиента не видны - PullRequest
2 голосов
/ 16 января 2012

Наш клиент хочет добавить выпадающий список «Промышленность» к регистрации клиента. Мы создали новый атрибут клиента «отрасль» и ввели соответствующие значения.

Это не показывалось на входе. Я посмотрел на customer/form/register.phtml, и он ничего не вызывал для атрибутов, поэтому я извлек из enterprise/default/template/customer/form/register.phtml следующее:

<?php $customerAttributes = $this->getChild('customer_form_user_attributes');?>
<?php if ($customerAttributes): ?>
    <?php $customerAttributes->setShowContainer(false);?>
    <?php $this->restoreSessionData($customerAttributes->getForm());?>
    <?php echo $customerAttributes->toHtml()?>
<?php endif;?>

И затем я добавил в .xml обновление, найденное в 'enterprise / layout / customer.xml':

<remove name="right"/>
<remove name="left"/>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
<block type="page/html_wrapper" name="customer.form.register.fields.before"     translate="label">
<label>Form Fields Before</label>
<!--action method="setMayBeInvisible"><value>1</value></action-->
<action method="setElementClass"><value>rewards</value></action>
</block>
<block type="enterprise_customer/form" template="customer/form/userattributes.phtml" name="customer_form_user_attributes">
<action method="setFormCode"><code>customer_account_create</code></action>
<action method="setEntityModelClass"><code>customer/customer</code></action>
</block>
<block type="enterprise_customer/form" template="customer/form/userattributes.phtml" name="customer_form_address_user_attributes">
<action method="setFormCode"><code>customer_register_address</code></action>
<action method="setEntityModelClass"><code>customer/address</code></action>
</block>
<reference name="content">
<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml">
    <action method="append"><block>customer.form.register.fields.before</block>          <alias>form_fields_before</alias></action>
    <action method="append"><block>customer_form_user_attributes</block>    </action>
    <action method="append">    <block>customer_form_address_user_attributes</block></action>
</block>
</reference>
<update handle="customer_form_template_handle"/>

На данный момент атрибуты не видны во внешнем интерфейсе. Если я выполню:

<code><pre>
<?php print_r($customerAttributes->getUserDefinedAttributes()) ?>

Мне возвращен массив атрибутов, как я и ожидал. Что мне здесь не хватает?

Ответы [ 2 ]

3 голосов
/ 17 января 2012

Нашел это.Нужен этот материал в customer.xml.По какой-то причине использование enterprise / default customer.xml не работало, но я добавил это, и это было хорошо.

<customer_form_template_handle>
    <reference name="content">
        <block name="customer_form_template" type="enterprise_customer/form_template">
            <action method="addRenderer">
                <type>text</type>
                <renderer_block>enterprise_customer/form_renderer_text</renderer_block>
                <template>customer/form/renderer/text.phtml</template>
            </action>
            <action method="addRenderer">
                <type>textarea</type>
                <renderer_block>enterprise_customer/form_renderer_textarea</renderer_block>
                <template>customer/form/renderer/textarea.phtml</template>
            </action>
            <action method="addRenderer">
                <type>multiline</type>
                <renderer_block>enterprise_customer/form_renderer_multiline</renderer_block>
                <template>customer/form/renderer/multiline.phtml</template>
            </action>
            <action method="addRenderer">
                <type>date</type>
                <renderer_block>enterprise_customer/form_renderer_date</renderer_block>
                <template>customer/form/renderer/date.phtml</template>
            </action>
            <action method="addRenderer">
                <type>select</type>
                <renderer_block>enterprise_customer/form_renderer_select</renderer_block>
                <template>customer/form/renderer/select.phtml</template>
            </action>
            <action method="addRenderer">
                <type>multiselect</type>
                <renderer_block>enterprise_customer/form_renderer_multiselect</renderer_block>
                <template>customer/form/renderer/multiselect.phtml</template>
            </action>
            <action method="addRenderer">
                <type>boolean</type>
                <renderer_block>enterprise_customer/form_renderer_boolean</renderer_block>
                <template>customer/form/renderer/boolean.phtml</template>
            </action>
            <action method="addRenderer">
                <type>file</type>
                <renderer_block>enterprise_customer/form_renderer_file</renderer_block>
                <template>customer/form/renderer/file.phtml</template>
            </action>
            <action method="addRenderer">
                <type>image</type>
                <renderer_block>enterprise_customer/form_renderer_image</renderer_block>
                <template>customer/form/renderer/image.phtml</template>
            </action>
        </block>
    </reference>
</customer_form_template_handle>
0 голосов
/ 17 января 2012

Вы должны проверить template/customer/form/userattributes.phtml, который контролирует определенные пользователем атрибуты. Я не знаю, кто-нибудь трогал этот файл? Проверьте это первым.

    <?php foreach ($this->getUserDefinedAttributes() as $attribute):?>
        <?php $attributeContent = $this->getAttributeHtml($attribute);?>
            <?php if ($attributeContent): ?>
               <li><?php echo $attributeContent;?></li>
            <?php endif;?>
    <?php endforeach;?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...