【问题标题】:SendInBlue PHP API with Codeigniter带有 Codeigniter 的 SendInBlue PHP API
【发布时间】:2018-06-24 18:12:57
【问题描述】:

我正在使用 Codeigniter 框架并尝试与 SendInBlue 的 PHP API 集成。他们的PHP documentation 不是很有帮助,Github 上的设置说明也不清楚。

文档说“下载文件并包含 autoload.php”:

require_once('/path/to/APIv3-php-library/vendor/autoload.php');

但我在任何地方都找不到autoload,而且我不确定如何将其包含在我的 CI 结构中。

更新:

我联系了 Sendinblue 支持,他们没有任何 CI 用户安装教程。我尝试使用编译器,并创建了文件夹结构,但我仍然在将它与 CI 集成时遇到问题。我将所有文件夹都放在了我的库中,但它没有正确加载并抱怨 Autoload 类不存在。

【问题讨论】:

  • 你使用作曲家吗?看起来这个 autoload.php 是作曲家 autoload.php...
  • 不,我真的不知道什么是作曲家

标签: codeigniter sendinblue


【解决方案1】:

要获取 autoload.php,您需要使用Composer。这将解决所有依赖项并为您安装/更新它们。

如果您在库位置中已经拥有整个 SendInBlue API 文件夹结构,则只能在控制器中添加 class My_Class ... 行之前 require_once (APPPATH . 'vendor/autoload.php');

例如。

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

// include manually module library - SendInBlue API
require_once (APPPATH . 'vendor/autoload.php');

class My_Class extends CI_Controller {
....

之后,您可以按照Github: APIv3-php-library - Getting Started的指南进行操作

如果您遇到错误,则意味着您的 SendInBlue 结构不好。我建议你使用Composer

  1. 如果未安装 Composer,请安装 - Installation - Linux / Unix / OSXInstallation - Windows
  2. 使用 Composer 安装 SendinBlue 的 API - Github: APIv3-php-library - Installation & Usage
  3. 在您的控制器中添加autoload.php - 参见前面的示例

如果仍有问题,请在此处添加错误列表。

【讨论】:

  • 成功了!只是做了一些调整。在我的控制器中,正确的路径是 require_once (APPPATH . 'libraries\vendor\autoload.php');,我不得不将 autoload.php 更改为 require_once (APPPATH . 'libraries\vendor\composer\autoload_real.php'); 而不是默认的 _DIR_ ...
【解决方案2】:

我有一个很好的解决方案,它对我来说很好,我希望它也对你有用。 我正在使用 API-v3。

我所做的是:

  1. 在我的本地 PC 上通过 composer 下载了 API。
  2. 在服务器上创建了一个名为“sendinblue”的文件夹(我们有 assets 文件夹)并从下载的 API 上传供应商文件夹 在这个文件夹中。
  3. 创建了一个名为“Sendinblue.php”的库,并在此处添加了所有必要的功能。现在我可以像使用其他库一样使用这个库了。

这是我的库结构:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Sendinblue{
    public $config;
    public $apiInstance;
    public function __construct(){      
        require_once('sendinblue/vendor/autoload.php');
        $this->config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', '');
        $this->apiInstance = new SendinBlue\Client\Api\ContactsApi(
            new GuzzleHttp\Client(),
            $this->config
        );      
    }

    public function get_contact_info($data){
        $identifier = $data['email'];
        try {
          return $result = $this->apiInstance->getContactInfo($identifier);
        } catch (Exception $e) {
          return 'Exception when calling ContactsApi->getContactInfo: '.$e->getMessage();
        }
    }
    
    public function create_contact($data){
        $createContact = new \SendinBlue\Client\Model\CreateContact();
        $createContact['email'] = $data['email'];
        $createContact['listIds'] = [2];
        try {
          return $result = $this->apiInstance->createContact($createContact);
        } catch (Exception $e) {
          return $e->getCode();
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 2021-02-15
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多