我有登录表单和注册表单,集成在同一页面中。即,在登录页面本身。
我在显示错误消息时遇到问题,就像在任何一个表单中发生错误一样,然后错误消息显示在登录和注册部分。
例如,假设我们提供了错误的登录数据登录,则错误消息显示在登录和注册表单的顶部,因为两个表单都在同一页面中。
如果我们尝试使用现有的电子邮件地址进行注册,那么也会出现错误消息,说明电子邮件已经存在,显示在登录表单的顶部并注册表单。
我的要求是我只需要以相应的形式显示错误信息。
为了将登录和注册表单集成到登录页面本身,我更改了文件\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的新手。任何帮助将不胜感激。
答案 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模块完成了所有这些工作。