提交后的PHP表单问题

问题描述 投票:0回答:1

请尝试提交此表单:

<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>

填写电子邮件和订单后。当我调试时,生病了将重定向到空白页。我想先得到氧化剂,然后在得到氧化剂后重新定向,这样我就可以直接搜索。

在过去两天里尝试了很多事情,但没有任何效果。

这就是我获得氧化的功能

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,有人可以给我一点帮助,非常感谢

php forms smarty shop oxid
1个回答
0
投票

您不需要实际的重定向,除非您想阻止访问者点击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}]
© www.soinside.com 2019 - 2024. All rights reserved.