5

我正在尝试自定义 Opencart 支付模块,我看到很多地方都在使用配置信息,但我找不到任何创建正在使用的变量的东西。我知道在管理页面中,如果我选择“paypal 标准”,我可以设置所有“配置”信息,但我找不到下划线的“模型”,是否有模型,我希望创建一个新的配置设置,可在里面设置管理页面

管理页面如何知道要设置哪些变量?如果我更改支付模块的管理员“视图”以显示新设置,该设置是否会自动在目录中可用?

一些正在使用的配置数据的示例...

admin\view\template\payment\pp_standard.tpl(贝宝管理模板),允许设置“测试模式”....

<tr>
        <td><?php echo $entry_test; ?></td>
        <td><?php if ($pp_standard_test) { ?>
          <input type="radio" name="pp_standard_test" value="1" checked="checked" />
          <?php echo $text_yes; ?>
          <input type="radio" name="pp_standard_test" value="0" />
          <?php echo $text_no; ?>
          <?php } else { ?>
          <input type="radio" name="pp_standard_test" value="1" />
          <?php echo $text_yes; ?>
          <input type="radio" name="pp_standard_test" value="0" checked="checked" />
          <?php echo $text_no; ?>
          <?php } ?></td>
      </tr>

catalog\controller\poayment\pp_standard.php(paypal 目录控制器),使用上面的“测试模式”来确定要点击哪个 paypal Webservice URL。

if (!$this->config->get('pp_standard_test')) {
    $curl = curl_init('https://www.paypal.com/cgi-bin/webscr');
} else {
    $curl = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
}

我期待在某处找到一个在某处定义了“pp_standard_test”的“模型”,但我什么也没找到,任何理解这一点的帮助将不胜感激。

PS 网上有很多建议说“贝宝标准”支付模块是一个很好的起点,但我们很可能不会使用贝宝,这是我试图弄清楚的原则。

4

1 回答 1

5

在 OpenCart 管理中,admin/model/setting/setting.php模型用于此类模块/扩展,其中仅提供键组名称和发布的数据以存储在settingDB 表中......(以及可选的多存储store_id安装)

您可以检查 dir 中的任何控制器admin/controller/payment/以查看该模型是如何使用的(pp_standard.php来自 OC 1.5.5.1 中的第 10 行):

$this->load->model('setting/setting');

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
    $this->model_setting_setting->editSetting('pp_standard', $this->request->post);

    $this->session->data['success'] = $this->language->get('text_success');

    $this->redirect($this->url->link('extension/payment', 'token=' . $this->session->data['token'], 'SSL'));
}

这会将所有表单数据写入settingDB 表,同时表单字段的名称用作填充值的键。

因此,如果你打电话

$this->config->get('<KEY>');

您可以获得为<KEY>键设置的值。

于 2013-06-05T11:42:47.550 回答