2014-04-10 16 views
0

即時通訊設法添加一個字段到結帳頁面請求一個電話號碼beofre訂單處理。在opencart結賬時加上電話號碼

林我checkout.tpl我已經在checkout.php控制器添加

<label for"telephone">Phone Number</label><input type="text" name="telephone" value="<?php echo $telephone; ?>" required="required" /> 

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

所以它顯示在默認配置文件中提供的電話號碼,並給出了機會用戶改變它。

但即時通訊的問題是,當我的訂單是與一個新的電話號碼處理,按照它保存舊號碼的順序。

當我$this->request->post['telephone']打印的價值,它說

未定義指數:電話

即使是輸入提交保存的值。有人能告訴我我在這裏做錯了什麼嗎?

回答

1

它是因爲你所做的領域永遠不會發布到checkout.php

在結帳頁面中查看一切都是由ajax調用發生的。當您處於初始結帳頁面時,它將根據用戶選擇的選項(如register accountguest checkout)獲取tpl(payement_address.tpl,guest_shipping.tpl等)中的一個的內容,或者如果用戶已登錄,它將直接打開帳單地址

現在,這些各自的tpl通過ajax加載後,它們中的字段通過ajax發佈到它們各自的控制器。控制器位於catalog/controller/checkout

所以,你會不會想添加隨機的checkout.tpl但在這些階段像shipping_address.tpl

的一個領域,然後在shipping_address控制器public function validate()添加$this->session->data['telephone'] = $this->request->post['telephone']

提防有狀態的if(existing address) else if (new address)所以添加它相應的東西后幾分鐘(不要問在SO:P的問題)

然後最後你將需要添加此電話confirm.php控制器

取代

$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文件知道發佈請求永遠不會去checkout.php控制器,只是添加一個變量到控制器文件是不夠的,你還必須在數據即將到來的地方進行更改保存在數據庫中