php - 在 OpenCart 3 结帐的第 5 步中添加了自定义字段 - 未接收输入
问题描述
我在 OpenCart 3.0.3.1 结账流程的付款方式部分添加了一个自定义文本输入字段。我知道我遗漏了一些东西,因为订单结帐过程将完成,但它传递的是自定义字段的默认值,而不是用户输入值。
默认值在付款方式的保存功能中设置。如果不在这里设置,我会收到一个我不知道如何解决的 json 错误。
我迷失了我所缺少的东西。拜托,有人能告诉我为什么输入值被忽略了吗?我可以更改什么以使用户输入值与其余订单数据一起传递?
我的 Twig 文本字段代码,payment_method.php:
`<div class="form-group required">
<label class="col-sm-2 control-label" for="input-ponumber">{{ entry_ponumber }}</label>
<div class="col-sm-10">
<input type="text" name="ponumber" id="ponumber" class="form-control" />
</div> `
添加:
'#collapse-payment-method input[type=\'text\']:checked'
到 checkout.twig 中的 Ajax 脚本以包含文本字段:
'data: $('#collapse-payment-method input[type=\'text\']:checked, #collapse-payment-method input[type=\'radio\']:checked, #collapse-payment-method input[type=\'checkbox\']:checked, #collapse-payment-method textarea'),'
在 catalog/controller/checkout/payment_method.php 中添加了 ponumber 代码:
在索引函数中:
'if (empty($this->request->post['ponumber'])) {
$data['error_warning'] = sprintf($this->language->get('error_ponumber'), $this->url->link('checkout/checkout'));
} else {
$data['error_warning'] = '';
}
if (isset($this->session->data['ponumber'])) {
$data['ponumber'] = $this->session->data['ponumber'];
} else {
$data['ponumber'] = '';
}'
在保存函数中(否则我会收到 Json 错误 - ponumber 上的索引无效):
' if (!$json) {
$this->session->data['payment_method'] = $this->session->data['payment_methods'][$this->request->post['payment_method']];
$this->session->data['comment'] = strip_tags($this->request->post['comment']);
if (!empty($this->request->post['ponumber'])) {
$this->session->data['ponumber'] = $this->request->post['ponumber'];
} else {
$this->session->data['ponumber'] = '911';
}
}'
将 ponumber 添加到目录/控制器/checkout/confirm.php:
'$order_data['ponumber'] = $this->session->data['ponumber'];'
在 catalog/model/order.php 中的插入查询中添加了 ponumber:
'ponumber = '" . $this->db->escape($data['ponumber']) . "','
我错过了什么?为什么 ponumber 的默认 911 值最终会出现在数据库中,而不是用户输入的值?请帮忙。
是的,我进行了搜索,搜索,搜索,以前的帖子要么没有帮助,要么没有得到答复。任何和所有的帮助表示赞赏!谢谢!
解决方案
好吧,将其张贴在多个地方,似乎没有人能够真正提供帮助。
如果其他人对此感到困惑并且需要在他们的 OpenCart 3.0 结帐流程中使用自定义字段,例如采购订单#,请查看以下内容:
https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=36216
这个开发商厉害了!他们为我创建了这个,然后对其进行了修改以显示在第 5 步中并具有更标准的“必需”感觉。如果您需要类似的东西,他们也会迅速做出反应并且非常合理。问题解决了。
推荐阅读
- git - git difftool 挂起并且屏幕变得无响应
- android - 同步 FirebaseAuth.getInstance().signOut() 和异步 AuthUI.getInstance().signOut() 之间有什么区别吗
- wordpress - 通过子主题自定义主题
- python - 将输入从文本元组转换为浮点列表时的精度损失
- ios - 将十六进制字符串转换为字符串
- vue.js - VueJS:如何触发“更改”以编程方式更改
- asp.net - 无法使用 ApiController 进行 Owin 身份验证质询
- python - Pytorch 中(据称)空批次的运行时错误
- generics - 未来大型机人员可以学习和工作哪些技术
- mysql - 当我尝试将数据库 DataSource 添加到 Visual Studio“表 mysql.proc 不存在”时,如何解决此错误