PHP 提交后的表单问题
PHP form issue after submit
我将尝试提交此表单:
<form name="quick_login" class="loginfrm" action="[{$oViewConf->getSelfActionLink()}]cl=subtel_account_extend_bill_details" method="post">
<input type="hidden" id="oxid" name="oxid" value="[{$oViewConf->getoxtrckID()}]">
<div class="form-group">
<label for="loginEmail_[{$style}]">[{oxmultilang ident="WIDGET_LOGINBOX_EMAIL_ADDRESS"}]</label>
<input type="text" id="email_track" name="email_track" class="form-control" required>
</div>
<div class="form-group">
<label for="ordernr_track_[{$style}]">[{*oxmultilang ident="WIDGET_LOGINBOX_PASSWORD"*}]Order number</label>
<input type="text" id="ordernr_track" name="ordernr_track" class="form-control" required >
</div>
<button type="submit" class="btn [{if $style eq 'desktop'}]btn-sm[{else}]btn-lg[{/if}] btn-info start_login">[{*oxmultilang ident="LOGIN"*}]Show order</button>
<br/>
<br/>
</form>
填写email和ordernr后。当我调试我的 oxid 时,我会重定向到一个空页面。我想先获取 oxid,然后在获取 oxid 后重定向,这样我就可以转到我正在搜索的订单。
这两天我尝试了很多东西,但没有任何效果。
这就是我获得氧化的功能
public function getoxtrckID()
{
$sEMail = oxRegistry::getConfig()->getRequestParameter('email_track', true);
$sONumber = oxRegistry::getConfig()->getRequestParameter('ordernr_track', true);
$sArticleId = oxDb::getDb()->getOne("SELECT OXID FROM oxorder WHERE OXORDERNR = ? AND OXBILLEMAIL = ?", [$sONumber, $sEMail]);
return $sArticleId;
}
我不擅长 JS,所以我只尝试了 php,谁能给我一点帮助,非常感谢
你不需要实际的重定向,除非你想阻止访问者点击 F5 并再次重新加载同一页面,这在这里没有必要。
在我们开始之前:您的变量 $sArticleId
包含一个订单 ID,为了使代码易于理解,您应该将其命名为 $sOrderId
.
找到订单 ID 后,您还需要像这样加载订单数据:
$oOrder = oxNew("oxorder");
$oOrder->load($sOrderId);
为了简单起见,您可以删除隐藏的订单ID字段,将加载订单数据的代码放入render()
函数并将订单对象传递给视图(模板):
public function render()
{
... your render code ...
$sEMail = oxRegistry::getConfig()->getRequestParameter('email_track', true);
$sONumber = oxRegistry::getConfig()->getRequestParameter('ordernr_track', true);
// if form was submitted, both variables will be set
if($sEMail && $sONumber)
{
// finding order
$sOrderId = oxDb::getDb()->getOne("SELECT OXID FROM oxorder WHERE OXORDERNR = ? AND OXBILLEMAIL = ?", [$sONumber, $sEMail]);
if($sOrderId) // order found -> loading order data
{
$oOrder = oxNew("oxorder");
$oOrder->load($sOrderId)
$this->addTplParam('oOrder', $oOrder);
}
else // order not found, display error message
{
oxRegistry::get("oxUtilsView")->addErrorToDisplay('Order not found');
}
}
return $sTempalteName;
}
在您的模板中,您将获得 oxOrder 对象,其中包含所有属性和方法:
[{if $oOrder}]
<h2>Your Order Data:</h2>
[{$oOrder->oxorder__whateveryouwant->value }]
[{/if}]
我将尝试提交此表单:
<form name="quick_login" class="loginfrm" action="[{$oViewConf->getSelfActionLink()}]cl=subtel_account_extend_bill_details" method="post">
<input type="hidden" id="oxid" name="oxid" value="[{$oViewConf->getoxtrckID()}]">
<div class="form-group">
<label for="loginEmail_[{$style}]">[{oxmultilang ident="WIDGET_LOGINBOX_EMAIL_ADDRESS"}]</label>
<input type="text" id="email_track" name="email_track" class="form-control" required>
</div>
<div class="form-group">
<label for="ordernr_track_[{$style}]">[{*oxmultilang ident="WIDGET_LOGINBOX_PASSWORD"*}]Order number</label>
<input type="text" id="ordernr_track" name="ordernr_track" class="form-control" required >
</div>
<button type="submit" class="btn [{if $style eq 'desktop'}]btn-sm[{else}]btn-lg[{/if}] btn-info start_login">[{*oxmultilang ident="LOGIN"*}]Show order</button>
<br/>
<br/>
</form>
填写email和ordernr后。当我调试我的 oxid 时,我会重定向到一个空页面。我想先获取 oxid,然后在获取 oxid 后重定向,这样我就可以转到我正在搜索的订单。
这两天我尝试了很多东西,但没有任何效果。
这就是我获得氧化的功能
public function getoxtrckID()
{
$sEMail = oxRegistry::getConfig()->getRequestParameter('email_track', true);
$sONumber = oxRegistry::getConfig()->getRequestParameter('ordernr_track', true);
$sArticleId = oxDb::getDb()->getOne("SELECT OXID FROM oxorder WHERE OXORDERNR = ? AND OXBILLEMAIL = ?", [$sONumber, $sEMail]);
return $sArticleId;
}
我不擅长 JS,所以我只尝试了 php,谁能给我一点帮助,非常感谢
你不需要实际的重定向,除非你想阻止访问者点击 F5 并再次重新加载同一页面,这在这里没有必要。
在我们开始之前:您的变量 $sArticleId
包含一个订单 ID,为了使代码易于理解,您应该将其命名为 $sOrderId
.
找到订单 ID 后,您还需要像这样加载订单数据:
$oOrder = oxNew("oxorder");
$oOrder->load($sOrderId);
为了简单起见,您可以删除隐藏的订单ID字段,将加载订单数据的代码放入render()
函数并将订单对象传递给视图(模板):
public function render()
{
... your render code ...
$sEMail = oxRegistry::getConfig()->getRequestParameter('email_track', true);
$sONumber = oxRegistry::getConfig()->getRequestParameter('ordernr_track', true);
// if form was submitted, both variables will be set
if($sEMail && $sONumber)
{
// finding order
$sOrderId = oxDb::getDb()->getOne("SELECT OXID FROM oxorder WHERE OXORDERNR = ? AND OXBILLEMAIL = ?", [$sONumber, $sEMail]);
if($sOrderId) // order found -> loading order data
{
$oOrder = oxNew("oxorder");
$oOrder->load($sOrderId)
$this->addTplParam('oOrder', $oOrder);
}
else // order not found, display error message
{
oxRegistry::get("oxUtilsView")->addErrorToDisplay('Order not found');
}
}
return $sTempalteName;
}
在您的模板中,您将获得 oxOrder 对象,其中包含所有属性和方法:
[{if $oOrder}]
<h2>Your Order Data:</h2>
[{$oOrder->oxorder__whateveryouwant->value }]
[{/if}]