我已在opencart
中创建了自定义付款方式,并通过添加带有单选按钮的表格编辑了.tpl
文件。
这是一个例子:
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi6" />6 месеца x <?php echo round($order_info['total']/5.50, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni6" />6 месеца x <?php echo round($order_info['total']*(18.57/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi9" />9 месеца x <?php echo round($order_info['total']/7.92, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni9" />9 месеца x <?php echo round($order_info['total']*(12.97/100), 2).'лв.';?></label>
</div></td>
</tr>
我想在订单中添加从客户端选择的单选按钮中的数据,因此管理员可以在结帐过程后看到它。如果我可以在评论部分添加此信息,它对我有用。我怎样才能实现它? 这是我的payment_method.php文件:
class ControllerCheckoutPaymentMethod extends Controller {
public function index() {
$this->load->language('checkout/checkout');
if (isset($this->session->data['payment_address'])) {
// Totals
$total_data = array();
$total = 0;
$taxes = $this->cart->getTaxes();
$this->load->model('extension/extension');
$sort_order = array();
$results = $this->model_extension_extension->getExtensions('total');
foreach ($results as $key => $value) {
$sort_order[$key] = $this->config->get($value['code'] . '_sort_order');
}
array_multisort($sort_order, SORT_ASC, $results);
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('total/' . $result['code']);
$this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
}
}
// Payment Methods
$method_data = array();
$this->load->model('extension/extension');
$results = $this->model_extension_extension->getExtensions('payment');
$recurring = $this->cart->hasRecurringProducts();
foreach ($results as $result) {
if ($this->config->get($result['code'] . '_status')) {
$this->load->model('payment/' . $result['code']);
$method = $this->{'model_payment_' . $result['code']}->getMethod($this->session->data['payment_address'], $total);
if ($method) {
if ($recurring) {
if (method_exists($this->{'model_payment_' . $result['code']}, 'recurringPayments') && $this->{'model_payment_' . $result['code']}->recurringPayments()) {
$method_data[$result['code']] = $method;
}
} else {
$method_data[$result['code']] = $method;
}
}
}
}
$sort_order = array();
foreach ($method_data as $key => $value) {
$sort_order[$key] = $value['sort_order'];
}
array_multisort($sort_order, SORT_ASC, $method_data);
$this->session->data['payment_methods'] = $method_data;
}
$data['text_payment_method'] = $this->language->get('text_payment_method');
$data['text_comments'] = $this->language->get('text_comments');
$data['text_loading'] = $this->language->get('text_loading');
$data['button_continue'] = $this->language->get('button_continue');
if (empty($this->session->data['payment_methods'])) {
$data['error_warning'] = sprintf($this->language->get('error_no_payment'), $this->url->link('information/contact'));
} else {
$data['error_warning'] = '';
}
if (isset($this->session->data['payment_methods'])) {
$data['payment_methods'] = $this->session->data['payment_methods'];
} else {
$data['payment_methods'] = array();
}
if (isset($this->session->data['payment_method']['code'])) {
$data['code'] = $this->session->data['payment_method']['code'];
} else {
$data['code'] = '';
}
if (isset($this->session->data['comment'])) {
$data['comment'] = $this->session->data['comment'];
} else {
$data['comment'] = '';
}
$data['scripts'] = $this->document->getScripts();
if ($this->config->get('config_checkout_id')) {
$this->load->model('catalog/information');
$information_info = $this->model_catalog_information->getInformation($this->config->get('config_checkout_id'));
if ($information_info) {
$data['text_agree'] = sprintf($this->language->get('text_agree'), $this->url->link('information/information/agree', 'information_id=' . $this->config->get('config_checkout_id'), 'SSL'), $information_info['title'], $information_info['title']);
} else {
$data['text_agree'] = '';
}
} else {
$data['text_agree'] = '';
}
if (isset($this->session->data['agree'])) {
$data['agree'] = $this->session->data['agree'];
} else {
$data['agree'] = '';
}
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/checkout/payment_method.tpl')) {
$this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/checkout/payment_method.tpl', $data));
} else {
$this->response->setOutput($this->load->view('default/template/checkout/payment_method.tpl', $data));
}
}
public function save() {
$this->load->language('checkout/checkout');
$json = array();
if(isset($this->request->post['months'])){
$this->session->data['months'] = $this->request->post['months'];
}
// Validate if payment address has been set.
if (!isset($this->session->data['payment_address'])) {
$json['redirect'] = $this->url->link('checkout/checkout', '', 'SSL');
}
// Validate cart has products and has stock.
if ((!$this->cart->hasProducts() && empty($this->session->data['vouchers'])) || (!$this->cart->hasStock() && !$this->config->get('config_stock_checkout'))) {
$json['redirect'] = $this->url->link('checkout/cart');
}
// Validate minimum quantity requirements.
$products = $this->cart->getProducts();
foreach ($products as $product) {
$product_total = 0;
foreach ($products as $product_2) {
if ($product_2['product_id'] == $product['product_id']) {
$product_total += $product_2['quantity'];
}
}
if ($product['minimum'] > $product_total) {
$json['redirect'] = $this->url->link('checkout/cart');
break;
}
}
if (!isset($this->request->post['payment_method'])) {
$json['error']['warning'] = $this->language->get('error_payment');
} elseif (!isset($this->session->data['payment_methods'][$this->request->post['payment_method']])) {
$json['error']['warning'] = $this->language->get('error_payment');
}
if ($this->config->get('config_checkout_id')) {
$this->load->model('catalog/information');
$information_info = $this->model_catalog_information->getInformation($this->config->get('config_checkout_id'));
if ($information_info && !isset($this->request->post['agree'])) {
$json['error']['warning'] = sprintf($this->language->get('error_agree'), $information_info['title']);
}
}
$extra = '';
if(isset($this->session->data['months'])){
$extra = $this->session->data['months'];
}
if (!$json) {
$this->session->data['payment_method'] = $this->session->data['payment_methods'][$this->request->post['payment_method']];
$this->session->data['comment'] = $extra . " " .strip_tags($this->request->post['comment']);
}
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
这是.tpl文件,来自我的自定义付款方式(租赁计划),其中我已插入带有所需数据的单选按钮:
$('#button-confirm').on('click', function() {
$.ajax({
type: 'get',
url: 'index.php?route=payment/leasing_plans/confirm',
cache: false,
beforeSend: function() {
$('#button-confirm').button('loading');
},
complete: function() {
$('#button-confirm').button('reset');
},
success: function() {
location = '<?php echo $continue; ?>';
}
});
});
$(document).ready(function() {
$("div.leasecond").hide();
$("input[name$='months']").click(function() {
var test = $(this).val();
$("div.leasecond").hide();
$("#" + test).show();
// Place the text from the div in the textarea element. Постави ID на textarea !!!
// $("#text_leasing").text($("#" + test).text());
});
});
$('#input-payment-egn').keyup(function(e){
if($(this).val().length === 10)
e.preventDefault();
}).focusout(function(){
if($(this).val().length === 10){
$('#wrong-egn').slideUp();
} else {
$('#wrong-egn').slideDown();
}
});
&#13;
td{
text-align: center;
padding: 10px 10px 10px 10px;
}
/*tr:nth-child(even){background-color: #f2f2f2}*/
tr:hover {background-color: #f5f5f5}
.leasecond{
display: none;
}
&#13;
<h2><?php echo $text_instruction; ?></h2>
<p><b><?php echo $text_description; ?></b></p>
<div class="well well-sm">
<div class="well" style="display: table; cursor: pointer;">
<table align="left" cellspacing="1" style="table-layout:fixed;width:100%;">
<caption style="text-align: left;" id="tablica">
<i aria-hidden="true" class="fa fa-calendar fa-3x"></i> Избери схема на изплащане:
</caption>
<thead id="tablica1">
<tr>
<td ><img alt="" height="40" src="http://dev.mupcku.com/image/TBI-logo-b.png" /></td>
<td><img alt="" height="40" src="http://dev.mupcku.com/image/unicredit-logo-b.png" /></td>
</tr>
</thead>
<tbody id="tablica2">
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi3" />3 месеца x <?php echo round($order_info['total']/2.87, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni3" />3 месеца x <?php echo round($order_info['total']*(35.02/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi6" />6 месеца x <?php echo round($order_info['total']/5.50, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni6" />6 месеца x <?php echo round($order_info['total']*(18.16/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi9" />9 месеца x <?php echo round($order_info['total']/7.92, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni9" />9 месеца x <?php echo round($order_info['total']*(12.55/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi12" />12 месеца x <?php echo round($order_info['total']/10.16, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni12" />12 месеца x <?php echo round($order_info['total']*(9.75/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi15" />15 месеца x <?php echo round($order_info['total']/12.24, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni15" />15 месеца x <?php echo round($order_info['total']*(8.08/100), 2).'лв.';?></label>
</div></td>
</tr>
<tr>
<td><div class="radio">
<label><input type="radio" name="months" value="tbi18" />18 месеца x <?php echo round($order_info['total']/14.17, 2).'лв.';?></label>
</div></td>
<td><div class="radio">
<label><input type="radio" name="months" value="uni18" />18 месеца x <?php echo round($order_info['total']*(6.97/100), 2).'лв.';?></label>
</div></td>
</tr>
</tbody>
</table>
</div>
<div id="tbi3" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 3 х <?php echo $tbi3=round($order_info['total']/2.87, 2).'лв.';?> обща дължима сума: <?php echo ($tbi3*3).'лв.';?> ГПР: 30.36% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni3" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 3 x <?php echo $uni3=round($order_info['total']*(35.41/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni3*3).'лв.';?> ГПР: 30.36% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="tbi6" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 6 х <?php echo $tbi6=round($order_info['total']/5.50, 2).'лв.';?> обща дължима сума: <?php echo ($tbi6*6).'лв.';?> ГПР: 34.49% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni6" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 6 x <?php echo $uni6=round($order_info['total']*(18.57/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni6*6).'лв.';?> ГПР: 34.49% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="tbi9" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 9 х <?php echo $tbi9=round($order_info['total']/7.92, 2).'лв.';?> обща дължима сума: <?php echo ($tbi9*9).'лв.';?> ГПР: 36.23% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni9" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 9 x <?php echo $uni9=round($order_info['total']*(12.97/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni9*9).'лв.';?> ГПР: 36.23% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="tbi12" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 12 х <?php echo $tbi12=round($order_info['total']/10.16, 2).'лв.';?> обща дължима сума: <?php echo ($tbi12*12).'лв.';?> ГПР: 23.69% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni12" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 12 x <?php echo $uni12=round($order_info['total']*(10.19/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni12*12).'лв.';?> ГПР: 23.69% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="tbi15" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 15 х <?php echo $tbi15=round($order_info['total']/12.24, 2).'лв.';?> обща дължима сума: <?php echo ($tbi15*15).'лв.';?> ГПР: 23.89% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni15" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 15 x <?php echo $uni15=round($order_info['total']*(8.53/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni15*15).'лв.';?> ГПР: 23.89% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="tbi18" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с TBI, вноски 18 х <?php echo $tbi18=round($order_info['total']/14.17, 2).'лв.';?> обща дължима сума: <?php echo ($tbi18*18).'лв.';?> ГПР: 23.93% <br>
<p>Прочетох и разбрах записаното в документа на Ти Би Ай Кредит EАД - <a href="http://dev.mupcku.com/leasing/tbi.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Ти Би Ай Кредит EАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<div id="uni18" class="leasecond">
<input type="text" style="border: none;" readonly />Разсрочено плащане с UNI Credit, вноски 18 x <?php echo $uni18=round($order_info['total']*(7.44/100), 2).'лв.';?> обща дължима сума: <?php echo ($uni18*18).'лв.';?> ГПР: 23.93% <br>
<p>Правилата за ползване на Уникредит Кънсюмър Файненсинг ЕАД са - <a href="http://dev.mupcku.com/leasing/unicredit.pdf" target="_blank">Съгласие за обработка на личните данни</a>. Потвърждавам, че съм съгласен личните ми данни да бъдат обработвани от Уникредит Кънсюмър Файненсинг ЕАД, по описания в документа начин и за целите посочени в него.</p>
</div>
<form id="leasingform">
<div class="form-group required" style="padding-top: 15px;">
<label class="control-label" for="input-payment-egn"><?php echo $text_egn; ?></label>
<input type="text" maxlength="10" name="egn" value="" placeholder="Въведете вашето ЕГН" id="input-payment-egn"
class="form-control"/>
</div>
<div class="text-danger" id="wrong-egn" style="display: none;">Въведете валидно ЕГН !</div>
</form>
</div>
<div class="buttons">
<div class="pull-right">
<input type="button" value="<?php echo $button_confirm; ?>" id="button-confirm" class="btn btn-primary" data-loading-text="<?php echo $text_loading; ?>" />
</div>
</div>
&#13;
答案 0 :(得分:0)
查看Checkout页面上的脚本,该脚本会监视付款方式的click
事件:
$(document).delegate('#button-payment-method', 'click', function() {
$.ajax({
url: 'index.php?route=checkout/payment_method/save',
type: 'post',
data: $('#collapse-payment-method input[type=\'radio\']:checked, #collapse-payment-method input[type=\'checkbox\']:checked, #collapse-payment-method textarea'),
dataType: 'json',
beforeSend: function() {
$('#button-payment-method').button('loading');
},
你可以看到它正在将该div中的“checked”输入发送到Ajax调用中的路由(请参阅url)。因此,使用OpenCart的MVC实现,您可以在此处查找控制器文件:catalog\controller\checkout\payment_method.php
然后在该文件中查找save
公共函数。这就是您将收到所选数据的地方。
要处理查询的第二部分,如何在后端显示,当我遇到类似问题时,我将输入值添加到用户的注释中。为了做到这一点,我将输入数据添加到控制器文件中的Session变量(如上所述),然后在用户最后的“确认”单击后访问该值,以便用户不会立即看到注释。
将值添加到会话中:
if(isset($this->request->post['months'])){
$this->session->data['months'] = $this->request->post['months'];
}
现在可以使用此$this->session->data['months']
访问该值,您可以通过编辑save
函数将其添加到评论中:
$extra = '';
if(isset($this->session->data['months'])){
$extra = $this->session->data['months'];
}
if (!$json) {
$this->session->data['payment_method'] = $this->session->data['payment_methods'][$this->request->post['payment_method']];
$this->session->data['comment'] = $extra . " " .strip_tags($this->request->post['comment']);
}
我使用$extra
作为新数据的占位符,然后将其添加到用户的评论中,前提是session