Php 在opencart中的结账处添加电话号码

Php 在opencart中的结账处添加电话号码,php,opencart,Php,Opencart,我正试图在结帐页面添加一个文件,以便在处理订单时请求一个电话号码 我已经添加了Im my checkout.tpl <label for"telephone">Phone Number</label><input type="text" name="telephone" value="<?php echo $telephone; ?>" required="required" /> 因此,默认情况下,它会在配置文件中显示可用的电话号码,并为用户

我正试图在结帐页面添加一个文件,以便在处理订单时请求一个电话号码

我已经添加了Im my checkout.tpl

 <label for"telephone">Phone Number</label><input type="text" name="telephone" value="<?php echo $telephone; ?>" required="required" />
因此,默认情况下,它会在配置文件中显示可用的电话号码,并为用户提供更改电话号码的机会

但我遇到的问题是,当我用一个新的电话号码处理订单时,它会按顺序保存旧号码

当我在
$this->request->post['telephone']
中打印值时,它会显示

未定义索引:电话


即使输入文件也有一个值。有人能告诉我我做错了什么吗?

这是因为您创建的字段从未发布到
checkout.php

请参见“签出”页面,所有操作都是通过ajax调用进行的。当您处于初始结账页面时,它将根据用户选择的选项(如注册帐户或客人结账)获取其中一个tpl的内容(
付款地址.tpl
客人送货.tpl
等),或者如果用户已登录,它将直接打开帐单地址

现在,在通过ajax加载这些各自的tpl之后,其中的字段通过ajax发布到各自的控制器。控制器位于
catalog/controller/checkout

因此,您不希望在
checkout.tpl
中随机添加该字段,而是在其中一个阶段,如
shipping\u address.tpl

然后将您的
$this->session->data['telephone']=$this->request->post['telephone']
添加到配送地址控制器的
公共功能验证()

$this->data['telephone'] = $this->customer->getTelephone();
注意,如果(现有地址)或(新地址)
存在条件,那么在事情发生几分钟后,相应地添加它(不要在so:p中问这个问题)

最后,您需要将此电话添加到
confirm.php
controller

$this->data['telephone'] = $this->customer->getTelephone();
替换

$data['telephone']=$this->customer->getTelephone()

$data['telephone']=$this->session->data['telephone']

$data['telephone']=$this->session->data['guest']['telephone']

$data['telephone']=$this->session->data['telephone']

这应该是全部。我可能错过了一些东西,但这就是你要自己学习的全部目的

p.S.从下一次开始再努力一点,通过查看tpl文件,您一定知道post请求永远不会进入
checkout.php
controller,仅仅向controller文件添加变量是不够的,您还必须在数据即将保存到数据库中的位置进行更改