使用javascript以opencart 2.1.0.1顺序插入数据

时间:2017-08-28 07:40:08

标签: javascript radio-button opencart

我已在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文件,来自我的自定义付款方式(租赁计划),其中我已插入带有所需数据的单选按钮:

&#13;
&#13;
$('#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>&nbsp;Избери схема на изплащане:
              </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;
&#13;
&#13;

1 个答案:

答案 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

中存储了值