我必须在注册时验证用户是否已报告已在数据库中注册的税/桶,因此我避免用户注册两次。
我没有为此找到一个模块,所以计划通过ajax.jquery进行检查。
为此,我需要一个页面来查询数据库,寻找税/桶。
我不知道这是否是最好的方法。但我对magento知之甚少,那就是我想到的。
在entando中仍然不知道如何在替补席上做这个查询而在搜索教程等方面没有取得成功。
你读到这篇文章,能以某种方式帮助我吗?材料,文章,技巧,例子?感谢您的关注。
答案 0 :(得分:0)
我以一种我知道不是最准确的方式进行了验证。 我这样做了:
注意:我使用One Step Checkout模块Brazil和Youama Ajax Login and 注册,其中adcionei记录中的一些字段,作为taxvat。 可能这对其他人没用,但不想 保留问题没有答案。但是,如果有人有任何其他问题 建议,请告诉我,我将不胜感激。
在app / code / core / Mage / Page / etc / config.xml
添加:
<checktaxvat module="page" translate="label">
<label>Check taxvat</label>
<template>page/checktaxvat.phtml</template>
<layout_handle>page_checktaxvat</layout_handle>
</checktaxvat>
所以使用以下代码创建一个新文档:
<?php
$requi = $_SERVER["HTTP_REFERER"];
$requi= strtolower("/$requi/"); //
$server = $_SERVER['SERVER_NAME'];
$server= strtolower("/$server/");
if(preg_match($server, $requi) == 0){
header("Location: http://www.url");
die();
}
if(isset($_POST) && isset($_POST['taxvat']) && $_POST['taxvat'] != ""){
$read = Mage::getSingleton('core/resource')->getConnection('core_read');
if(isset($_POST['taxvatAt']) && $_POST['taxvatAt'] != ""){
$qry = "SELECT * FROM customer_entity_varchar WHERE `value` = '".addslashes($_POST['taxvat'])."' AND `value` != '".addslashes($_POST['taxvatAt'])."'";
}else{
$qry = "SELECT * FROM customer_entity_varchar WHERE `value` = '".addslashes($_POST['taxvat'])."'";
}
$res = $read->fetchAll($qry);
//$result = $read->fetchAll($sql);
$total_rows = count($res);
if($total_rows > 0){
echo 0;
}else{
echo 1;
}
}else{
echo "null";
}
die;
?>
保存在app / design / frontend / default / magento-bootstrap / template / page / checktaxvat.phtml
Magento admin - &gt; CMS - &gt;页面 - &gt;添加新页面
在信息页面 页面标题 =检查taxvat 关键网址 = checktaxvat
在设计中: 检查taxvat =检查taxvat
然后保存以创建页面
在app / design / frontend / base / default / template / youama / ajaxlogin / ajaxlogin.phtml
添加了代码
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("input[name=youama-taxvat]").focusout(function() {
jQuery.ajax({
type: "POST",
data: {'taxvat': jQuery("input[name=youama-taxvat]").val()},
url: "http://url/checktaxvat",
success: function (data) {
if(data == 0){
alert("taxvat já cadastrado!");
jQuery("input[name=youama-taxvat]").val("");
}
}
});
});
});
</script>
在app / design / frontend / base / default / template / onepagecheckout / persistent / customer / form / edit.phtml
添加了代码
<script type="text/javascript">
jQuery(document).ready(function(){
taxvatAt = "<?php echo $this->htmlEscape($this->getCustomer()->getTaxvat()) ?>";
jQuery("input[name=taxvat]").focusout(function() {
jQuery.ajax({
type: "POST",
data: {'taxvat': jQuery("input[name=taxvat]").val(), 'taxvatAt': "<?php echo $this->htmlEscape($this->getCustomer()->getTaxvat()) ?>"},
url: "http://url/checktaxvat",
success: function (data) {
if(data == 0){
alert("taxvat já cadastrado!");
jQuery("input[name=taxvat]").val("");
}
}
});
});
});
</script>
在app / design / frontend / base / default / template / onepagecheckout / onepage / billing.phtml
添加了代码
<script type="text/javascript">
jQuery(document).ready(function(){
if(typeof taxvatAt=='undefined'){
taxvatAt = "<?php echo $this->htmlEscape($this->getCustomer()->getTaxvat()) ?>";
}
jQuery.ajax({
type: "POST",
data: {'taxvat': jQuery("input[name='billing[taxvat]']").val(), 'taxvatAt': taxvatAt },
url: "http://url/checktaxvat",
success: function (data) {
if(data == 0){
alert("taxvat já cadastrado!");
jQuery("input[name='billing[taxvat]']").val("");
}
}
});
});
</script>
在skin / frontend / base / default / js / onepagecheckout.js
中BillingAddress.prototype通过以下方式查找并替换函数newAddress:
newAddress: function (isNew) {
if (isNew) {
this.resetSelectedAddress();
Element.show('bill_form');
if(jQuery("input[name='billing[taxvat]']").val() !=""){
taxvatAt = jQuery("input[name='billing[taxvat]']").val();
}
} else {
Element.hide('bill_form');
}
}
好吧,这解决了我的问题,但我意识到这不是正确的方法,但是因为我对magento的知识很小,所以我能做到。