为了账号安全,请及时绑定邮箱和手机立即绑定

提交后的PHP表单问题

提交后的PHP表单问题

PHP
肥皂起泡泡 2023-03-11 16:39:06
我会尝试提交此表格:<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>填写电子邮件和订单后。当我调试我的 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,有人能给我一点帮助吗,非常感谢
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

你不需要实际的重定向,除非你想阻止访问者点击 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}]


查看完整回答
反对 回复 2023-03-11
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信