简体   繁体   English

提交后 PHP 表单问题

[英]PHP form issue after submit

ill try to submit this form:生病尝试提交此表格:

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

after fill in email and ordernr.填写 email 和 ordernr 后。 ill get redirectet to an empty page when i debug i gett my oxid.当我调试我得到我的氧化物时,我会重定向到一个空页面。 I want to get the oxid first and redirect after getting the oxid so i can go to the order im searching for.我想先得到氧化物,然后在得到氧化物后重定向,这样我就可以按照我正在搜索的顺序 go。

ill try a lot of things these past 2 days but nothing works.这两天我尝试了很多东西,但没有任何效果。

thats my functio to get the 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;
}

Im not good at JS so ill tryed only php, can someone give me a little help, thanks a lot我不擅长JS,所以只尝试了php,有人可以帮我一点忙,非常感谢

you don't need an actual redirect unless you want to prevent visitors from hitting F5 and reloading same page again, which is not necessary here.除非您想阻止访问者按 F5 并再次重新加载同一页面,否则您不需要实际的重定向,这在此处不是必需的。
Before we start: your variable $sArticleId contains an order Id, to keep the code understandable you should name it $sOrderId .在我们开始之前:您的变量$sArticleId包含一个订单 ID,为了使代码易于理解,您应该将其命名为$sOrderId

After you found your order Id you also need to load the order data like this:找到订单 ID 后,您还需要像这样加载订单数据:

$oOrder = oxNew("oxorder");
$oOrder->load($sOrderId);

In order to keep it simple, you can remove your hidden order id field, put the code for loading the order data into the render() function and pass the order object to the view (template):为了简单起见,您可以删除隐藏的订单 id 字段,将加载订单数据的代码放入render() function 并将订单 object 传递给视图(模板):

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

In your template you will get the oxOrder object will all the properties and methonds:在您的模板中,您将获得 oxOrder object 将所有属性和方法:

[{if $oOrder}]
  <h2>Your Order Data:</h2>
  [{$oOrder->oxorder__whateveryouwant->value }]
[{/if}]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM