当两个表单集成在同一magento页面中时显示错误消息

时间:2011-11-24 07:18:27

标签: magento

我有登录表单和注册表单,集成在同一页面中。即,在登录页面本身。

我在显示错误消息时遇到问题,就像在任何一个表单中发生错误一样,然后错误消息显示在登录和注册部分。

例如,假设我们提供了错误的登录数据登录,则错误消息显示在登录和注册表单的顶部,因为两个表单都在同一页面中。

如果我们尝试使用现有的电子邮件地址进行注册,那么也会出现错误消息,说明电子邮件已经存在,显示在登录表单的顶部并注册表单。

我的要求是我只需要以相应的形式显示错误信息。

为了将登录和注册表单集成到登录页面本身,我更改了文件\app\design\frontend\anz\default\layout\customer.xml,如下所示

客户登录页面的布局

<customer_account_login translate="label">
    <label>Customer Account Login Form</label>
    <!-- Mage_Customer -->
    <remove name="right"/>
    <remove name="left"/>

    <reference name="root">
        <action method="setTemplate"><template>page/1column.phtml</template></action>
    </reference>
    <reference name="content">
        <block type="customer/form_login" name="customer_form_login" template="customer/form/login.phtml"/>
    </reference>


    <!-- Mage_Customer -->
    <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"/>



</customer_account_login>

我是magento的新手。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

我稍微更改了你的代码。请告诉我你的表格在哪里呈现?

<customer_account_login translate="label">
    <label>Customer Account Login Form</label>
    <!-- Mage_Customer -->
    <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_login" name="customer_form_login" template="customer/form/login.phtml"/>
        <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"/>
</customer_account_login>

答案 1 :(得分:0)

欢迎来到Magento主题: - )

首先,在您的自定义主题下使用local.xml布局文件通常是一种更好的做法(默认情况下它不存在,它可供最终实施者使用)。这样,您就不必不必要地将更改合并到customer.xml中以使其保持最新。

在local.xml中,您可以使用<update />指令将布局更新xml从一个句柄包含到另一个句柄中(这实际上就是您已经在做的):

<customer_account_login>
    <update handle="customer_account_create" />
</customer_account_login>

您需要自定义创建模板customer/form/register.phtml并移除其<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>来电。

答案 2 :(得分:0)

我尝试了一种简单的方法来达到要求。可能有更好的方法来做到这一点,但我认为这很简单。

我创建了一个隐藏变量,并将这些隐藏变量放在表单中以识别提交的表单。完成相应的操作后,这些隐藏变量将作为参数传递。然后我提供了一个if块来根据参数值显示消息。

我通过覆盖Mage Customer模块完成了所有这些工作。