2012-12-16 62 views
2

我在opencart中發佈變量時遇到了一些麻煩。我想要做的是從結賬/登錄頁面上的文本字段中獲取兩個變量,稱爲名稱和地址。我希望在單擊繼續按鈕時將輸入到這兩個字段的值存儲起來,然後發送到checkout/guest頁面,在那裏我要回顯這些變量。這裏是我做了什麼:如何使用opencart將一些變量發佈到文件中?

這裏是我的checkout.tpl文件,其中我試圖名稱和地址變量發送到結賬/客戶端頁,專門接收方法:

$('#button-account').live('click', function() { 
    var name = $('#name').val(); 
    var address = $('#address').val(); 
    $.post('index.php?route=checkout/guest/receive', { name: name, address: address}); 

});

然後在guest.php控制器文件,我收到貼變量,並將它們存儲在2個變量稱爲名稱和地址:

public function receive() { 
$name = $this->request->post['name']; 
$address = $this->request->post['address']; 
} 

然後在guest.tpl文件,我贊同出來:

<?php 
echo $name; 
echo $address; 
?> 

當我加載客戶端頁,我收到以下錯誤信息:用C名稱:\ XAMPP \ htdocs中\目錄\視圖\主題\默認\模板\結賬\ guest.tpl注意:未定義的變量on line 13注意:未定義變量:C:\ xampp \ htdocs \ catalog \ view \ theme \ default \ template \ checkout \ g中的地址如果有人能告訴我如何讓這段代碼工作,我將非常感激。從我可以告訴變量要麼不被髮送到正確的地方,要麼我沒有在guest.php頁面上正確訪問它們。

回答

5

首先 - 我不明白你爲什麼要張貼nameaddresscheckout/login頁面,因爲沒有這樣的字段在默認情況下,除非你已經添加它們。

無論如何,在這種情況下,我會按照這種方式進行 - 通過AJAX通過AJAX發佈到方法。在這裏,我將變量保存到會話:

public function receive() { 
    $this->session->data['guest_name'] = $this->request->post['name']; 
    $this->session->data['guest_address'] = $this->request->post['address']; 
} 

現在catalog/controller/checkout/guest.phpindex該會話變量的方法檢查,如果設置,存儲$this->data數組中的值呈現給用戶的模板:

if(isset($this->session->data['guest_name'])) { // it is enough to check only for one variable and only if it is set 
    $this->data['guest_name'] = $this->session->data['guest_name']; 
    $this->data['guest_address'] = $this->session->data['guest_address']; 
} 

之後,你可以在你的模板簡單地附和這些值(仍在檢查是否存在):

<?php if(isset($guest_name)) { ?> 
<div><?php echo $guest_name . ' - ' . $guest_address; ?></div> 
<?php } ?> 

無w您應該完成,同時避免任何undefined variable通知...

+0

完美的作品謝謝你。這些是我特別補充的領域。 –

+0

歡迎您! – shadyyx

相關問題