Magento 1 中的Ajax验证

作者:Andriy Zhuk

我是初学者Magento开发人员,最近我收到了一个有趣的任务,我必须为客户创建一个自定义地址属性,并将一个字段添加到客户的编辑地址页面并结帐。此外,插入该字段的信息应自动与现有值进行比较,以避免重复,无需重新加载页面。

当我开始完成这项任务时,很难在互联网上找到解决方案的具体信息。所以,我决定分享我如何使用Ajax验证输入的经验。

例如,我们创建了一个模块,该模块将在客户注册页面上使用Ajax检查电子邮件字段。在这个模块中,我们将使用自己的控制器,帮助程序并重写注册页面。

首先,我们应该激活我们将要使用的模块。我们将它命名为,例如,Atwix_EmailAjax。要做到这一点,只需通过以下路径创建一个声明文件:

app/etc/modules/Atwix_EmailAjax.xml

 

接下来,我们将创建一个模块文件夹并配置我们的模块。配置文件应该位于我们模块的名为“etc”的目录中 – 所以,让我们将它与新的XML文件一起使用:

app/code/local/Atwix/EmailAjax/etc/config.xml

 

之后,我们应该创建一个帮助器和控制器。在帮助程序内部,我们将编写一个函数,用于检查是否有任何其他客户的电子邮件与添加到该字段的客户端相同。在控制器内部,我们将调用此函数:

app/code/local/Atwix/EmailAjax/Helper/Data.php

 

app/code/local/Atwix/EmailAjax/controllers/AddressController.php

 

在下一个阶段,我们将为我们的模块制作一个布局文件,并在此布局中重写注册页面的模板。

app/design/frontend/rwd/default/layout/atwix_emailajax.xml

 

另外,让我们创建一个模板文件,然后我们将从所需页面的模板中复制代码。

app/design/frontend/rwd/default/template/atwix_emailajax/customer/form/register.phtml

在那之后,我们可以通过两种方式向前发展。这是第一个:

1.我们需要在此文件夹中创建一个包含JavaScript代码的文件:

skin/frontend/rwd/default/js/checkemailexists.js

如果您想在两个或更多页面上进行此验证,则应该特别注意。在这种情况下,最好多次使用相同的代码并将其更改(如果需要)仅适用于一个非常方便的地方。

此外,此代码应包含在布局中以将JS文件添加到模板中:

 

此外,如果我们的代码在单独的文件中,我们应该运行PHP代码(例如 – 获取控制器URL)。
我们可以使用PHP代码创建一个不可见的SPAN。

 

2.或者,如果您计划仅在单个页面上添加此验证,则只需在模板文件的末尾添加此代码即可:

 

在前端,它看起来像这样:

您可以在Github存储库中找到该模块的源代码。

这是我解决这个问题的方法。但是,我想知道是否有任何其他解决方案 – 欢迎您在下面的评论中添加您的建议或任何问题。

感谢您花时间阅读我们!

 

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: 在Magento 1 中的AJAX请求

下一篇: Magento 2请求流程概述

登录 评论
avatar