为什么我的输入会进入 Opencart 2.x 中错误的数据库列?
Why is my input going to the wrong database column in Opencart 2.x?
我试图在 Opencart 中将自定义字段添加到我的订单历史记录中 2.x 但是,我的自定义字段将数据发送到错误的数据库列。
我已将 "check_number" 添加为我的新字段。 "check_number" 以某种方式将其数据发送到 order_history 数据库中的 "notify" 列。 "notify" 正在将其数据发送到 "check_number" 列。请参阅下面的图片以供参考:
为什么会切换数据?我在我的代码中找不到错误发送数据的错误。
这是我的 vqmod 文件,其中包含所有更改:
<file name="admin/model/sale/order.php">
<operation error="skip">
<search position="replace"><![CDATA[
$query = $this->db->query("SELECT oh.date_added, os.name AS status, oh.comment, oh.notify FROM " . DB_PREFIX . "order_history oh LEFT JOIN " . DB_PREFIX . "order_status os ON oh.order_status_id = os.order_status_id WHERE oh.order_id = '" . (int)$order_id . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY oh.date_added ASC LIMIT " . (int)$start . "," . (int)$limit);
]]></search>
<add><![CDATA[
$query = $this->db->query("SELECT oh.date_added, os.name AS status, oh.comment, oh.check_number, oh.notify FROM " . DB_PREFIX . "order_history oh LEFT JOIN " . DB_PREFIX . "order_status os ON oh.order_status_id = os.order_status_id WHERE oh.order_id = '" . (int)$order_id . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY oh.date_added ASC LIMIT " . (int)$start . "," . (int)$limit);
]]></add>
</operation>
</file>
<file name="admin/controller/sale/order.php">
<operation error="skip">
<search position="after"><![CDATA[
$data['entry_notify'] = $this->language->get('entry_notify');
]]></search>
<add><![CDATA[
$data['entry_check_number'] = $this->language->get('entry_check_number');
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$data['column_notify'] = $this->language->get('column_notify');
]]></search>
<add><![CDATA[
$data['column_check_number'] = $this->language->get('column_check_number');
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
'notify' => $result['notify'] ? $this->language->get('text_yes') : $this->language->get('text_no'),
]]></search>
<add><![CDATA[
'check_number' => $result['check_number'],
]]></add>
</operation>
</file>
<file name="catalog/model/checkout/order.php">
<operation error="skip">
<search position="replace"><![CDATA[
public function addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false) {
]]></search>
<add><![CDATA[
public function addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false, $check_number = '') {
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', date_added = NOW()");
]]></search>
<add><![CDATA[
$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', check_number = '" . $this->db->escape($check_number) . "', date_added = NOW()");
]]></add>
</operation>
</file>
<file name="catalog/controller/api/order.php">
<operation error="skip">
<search position="after"><![CDATA[
'notify',
]]></search>
<add><![CDATA[
'check_number',
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['notify']);
]]></search>
<add><![CDATA[
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['check_number'], $this->request->post['notify']);
]]></add>
</operation>
</file>
<file name="admin/language/english/sale/order.php">
<operation error="skip">
<search position="after"><![CDATA[
$_['column_notify'] = 'Customer Notified';
]]></search>
<add><![CDATA[
$_['column_check_number'] = 'Check Number';
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$_['entry_notify'] = 'Notify Customer';
]]></search>
<add><![CDATA[
$_['entry_check_number'] = 'Check Number';
]]></add>
</operation>
</file>
<file name="admin/view/template/sale/order_info.tpl">
<operation error="skip">
<search position="replace" offset="2"><![CDATA[
<input type="checkbox" name="notify" value="1" id="input-notify" />
]]></search>
<add><![CDATA[
<input type="checkbox" name="notify" value="1" id="input-notify" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-check_number"><?php echo $entry_check_number; ?></label>
<div class="col-sm-10">
<textarea name="check_number" rows="1" id="input-check_number" class="form-control"></textarea>
</div>
</div>
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '¬ify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()),
]]></search>
<add><![CDATA[
data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '¬ify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&check_number=' + encodeURIComponent($('textarea[name=\'check_number\']').val()) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()),
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$('textarea[name=\'comment\']').val('');
]]></search>
<add><![CDATA[
$('textarea[name=\'check_number\']').val('');
]]></add>
</operation>
</file>
<file name="admin/view/template/sale/order_history.tpl">
<operation error="skip">
<search position="after"><![CDATA[
<td class="text-left"><?php echo $column_comment; ?></td>
]]></search>
<add><![CDATA[
<td class="text-left"><?php echo $column_check_number; ?></td>
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
<td class="text-left"><?php echo $history['comment']; ?></td>
]]></search>
<add><![CDATA[
<td class="text-left"><?php echo $history['check_number']; ?></td>
]]></add>
</operation>
</file>
在 Opencart 论坛上找到的答案:
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['check_number'], $this->request->post['notify']);
检查号是给定的第三个参数,而在方法中通知是第三个,检查号是第四个。这需要切换到:
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['notify'], $this->request->post['check_number']);
我试图在 Opencart 中将自定义字段添加到我的订单历史记录中 2.x 但是,我的自定义字段将数据发送到错误的数据库列。
我已将 "check_number" 添加为我的新字段。 "check_number" 以某种方式将其数据发送到 order_history 数据库中的 "notify" 列。 "notify" 正在将其数据发送到 "check_number" 列。请参阅下面的图片以供参考:
为什么会切换数据?我在我的代码中找不到错误发送数据的错误。
这是我的 vqmod 文件,其中包含所有更改:
<file name="admin/model/sale/order.php">
<operation error="skip">
<search position="replace"><![CDATA[
$query = $this->db->query("SELECT oh.date_added, os.name AS status, oh.comment, oh.notify FROM " . DB_PREFIX . "order_history oh LEFT JOIN " . DB_PREFIX . "order_status os ON oh.order_status_id = os.order_status_id WHERE oh.order_id = '" . (int)$order_id . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY oh.date_added ASC LIMIT " . (int)$start . "," . (int)$limit);
]]></search>
<add><![CDATA[
$query = $this->db->query("SELECT oh.date_added, os.name AS status, oh.comment, oh.check_number, oh.notify FROM " . DB_PREFIX . "order_history oh LEFT JOIN " . DB_PREFIX . "order_status os ON oh.order_status_id = os.order_status_id WHERE oh.order_id = '" . (int)$order_id . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY oh.date_added ASC LIMIT " . (int)$start . "," . (int)$limit);
]]></add>
</operation>
</file>
<file name="admin/controller/sale/order.php">
<operation error="skip">
<search position="after"><![CDATA[
$data['entry_notify'] = $this->language->get('entry_notify');
]]></search>
<add><![CDATA[
$data['entry_check_number'] = $this->language->get('entry_check_number');
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$data['column_notify'] = $this->language->get('column_notify');
]]></search>
<add><![CDATA[
$data['column_check_number'] = $this->language->get('column_check_number');
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
'notify' => $result['notify'] ? $this->language->get('text_yes') : $this->language->get('text_no'),
]]></search>
<add><![CDATA[
'check_number' => $result['check_number'],
]]></add>
</operation>
</file>
<file name="catalog/model/checkout/order.php">
<operation error="skip">
<search position="replace"><![CDATA[
public function addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false) {
]]></search>
<add><![CDATA[
public function addOrderHistory($order_id, $order_status_id, $comment = '', $notify = false, $check_number = '') {
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', date_added = NOW()");
]]></search>
<add><![CDATA[
$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', check_number = '" . $this->db->escape($check_number) . "', date_added = NOW()");
]]></add>
</operation>
</file>
<file name="catalog/controller/api/order.php">
<operation error="skip">
<search position="after"><![CDATA[
'notify',
]]></search>
<add><![CDATA[
'check_number',
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['notify']);
]]></search>
<add><![CDATA[
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['check_number'], $this->request->post['notify']);
]]></add>
</operation>
</file>
<file name="admin/language/english/sale/order.php">
<operation error="skip">
<search position="after"><![CDATA[
$_['column_notify'] = 'Customer Notified';
]]></search>
<add><![CDATA[
$_['column_check_number'] = 'Check Number';
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$_['entry_notify'] = 'Notify Customer';
]]></search>
<add><![CDATA[
$_['entry_check_number'] = 'Check Number';
]]></add>
</operation>
</file>
<file name="admin/view/template/sale/order_info.tpl">
<operation error="skip">
<search position="replace" offset="2"><![CDATA[
<input type="checkbox" name="notify" value="1" id="input-notify" />
]]></search>
<add><![CDATA[
<input type="checkbox" name="notify" value="1" id="input-notify" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label" for="input-check_number"><?php echo $entry_check_number; ?></label>
<div class="col-sm-10">
<textarea name="check_number" rows="1" id="input-check_number" class="form-control"></textarea>
</div>
</div>
]]></add>
</operation>
<operation error="skip">
<search position="replace"><![CDATA[
data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '¬ify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()),
]]></search>
<add><![CDATA[
data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '¬ify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&check_number=' + encodeURIComponent($('textarea[name=\'check_number\']').val()) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()),
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
$('textarea[name=\'comment\']').val('');
]]></search>
<add><![CDATA[
$('textarea[name=\'check_number\']').val('');
]]></add>
</operation>
</file>
<file name="admin/view/template/sale/order_history.tpl">
<operation error="skip">
<search position="after"><![CDATA[
<td class="text-left"><?php echo $column_comment; ?></td>
]]></search>
<add><![CDATA[
<td class="text-left"><?php echo $column_check_number; ?></td>
]]></add>
</operation>
<operation error="skip">
<search position="after"><![CDATA[
<td class="text-left"><?php echo $history['comment']; ?></td>
]]></search>
<add><![CDATA[
<td class="text-left"><?php echo $history['check_number']; ?></td>
]]></add>
</operation>
</file>
在 Opencart 论坛上找到的答案:
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['check_number'], $this->request->post['notify']);
检查号是给定的第三个参数,而在方法中通知是第三个,检查号是第四个。这需要切换到:
$this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['notify'], $this->request->post['check_number']);