swisnl/laravel-mautic

Laravel 对 Mautic API 的封装

0.3.0 2024-03-27 11:59 UTC

This package is auto-updated.

Last update: 2024-09-08 11:31:56 UTC


README

Latest Version on Packagist Software License Buy us a tree GitHub Tests Action Status GitHub Code Style Action Status Total Downloads Made by SWIS

包含电池的 Mautic API 的 Laravel 封装。

安装

您可以通过 composer 安装此包

composer require swisnl/laravel-mautic

配置

Laravel Mautic 需要连接配置。

要开始,您需要发布所有供应商资源

php artisan vendor:publish --tag="mautic-config"

这将在您的应用程序中创建一个 config/mautic.php 文件,您可以修改该文件以设置配置。同时,请确保检查本包中原始配置文件在版本间的更改。

有两个配置选项

默认连接名称

此选项('default')是您指定以下哪个连接作为所有工作的默认连接的地方。当然,您可以使用管理器类同时使用许多连接。此设置的默认值是 'main'

Mautic 连接

此选项('connections')是您为应用程序设置每个连接的地方。已包含示例配置,但您可以添加尽可能多的连接。请注意,支持的两种身份验证方法是:"oauth""password"

使用方法

MauticManager

这是最感兴趣的类。它绑定到 ioc 容器中的 'laravel-mautic',可以通过 Facades\Mautic 门面访问。该类通过扩展 AbstractManager 实现了 ManagerInterface。接口和抽象类都是我 Laravel Manager 包的一部分,因此您可能想访问 该存储库 中的文档,了解如何使用管理器类。请注意,返回的连接类始终是 Swis\Laravel\Mautic\Client 的实例。

Facades\Mautic

此门面将动态将静态方法调用传递到 ioc 容器中的 'laravel-mautic' 对象,默认情况下是 MauticManager 类。

LaravelMauticServiceProvider

此类不包含任何有意义的公共方法。此类应添加到 config/app.php 中的提供者数组。此类将设置 ioc 绑定。

实际示例

在这里,您可以看到这个包是如何简单易用的。默认情况下,默认适配器是 main。在配置文件中输入您的身份验证详细信息后,它将正常工作

use Swis\Laravel\Mautic\Facades\Mautic;
// you can alias this in config/app.php if you like

Mautic::contacts()->find(1);
// we're done here - how easy was that, it just works!

Mautic 管理器将表现得像 Swis\Laravel\Mautic\Client 类。如果您想调用特定的连接,可以使用 connection 方法

use Swis\Laravel\Mautic\Facades\Mautic;

// writing this:
Mautic::connection('main')->contacts()->find(1);

// is identical to writing this:
Mautic::contacts()->find(1);

// and is also identical to writing this:
Mautic::connection()->contacts()->find(1);

// this is because the main connection is configured to be the default
Mautic::getDefaultConnection(); // this will return main

// we can change the default connection
Mautic::setDefaultConnection('alternative'); // the default is now alternative

// Get all the contacts
Mautic::contacts()->getList();

如果您像我一样更喜欢使用依赖注入而不是门面,则可以轻松地像这样注入管理器

use Illuminate\Support\Facades\App; // you probably have this aliased already
use Swis\Laravel\Mautic\MauticManager;

class Foo
{
    protected $mautic;

    public function __construct(MauticManager $mautic)
    {
        $this->mautic = $mautic;
    }

    public function bar()
    {
        $this->mautic->contacts()->find(1);
    }
}

App::make('Foo')->bar();

有关 Swis\Laravel\Mautic\Client 类上可用的功能的更多信息,请查看 Mautic 文档 https://developer.mautic.org/#endpoints,以及管理器类 https://github.com/GrahamCampbell/Laravel-Manager#usage

通知

要使用此包内置的通知驱动程序,请确保您要通知的实体具有以下特征

class User extends Model
{
    use Notifiable;
    use SynchronizesWithMauticTrait;
    use NotifiableViaMauticTrait;
}

然后请确保向您的 Laravel 项目添加一个通知。这个通知应包含此包中的 MauticChannel,并在 via() 方法中。确保您的通知包含一个 toMautic() 方法,该方法返回一个 MauticMessage 实例。为此,您可以使用 create() 方法。

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Swis\Laravel\Mautic\Notifications\MauticChannel;
use Swis\Laravel\Mautic\Notifications\MauticMessage;

class OrderFulfilled extends Notification
{
    use Queueable;

    public function __construct(
        public readonly string $message,
    ) {
    }

    public function via(mixed $notifiable): array
    {
        return [MauticChannel::class];
    }

    public function toMautic(mixed $notifiable): MauticMessage
    {
        return MauticMessage::create(1) // The id of the mail in Mautic
            ->tokens([
                'message' => $message,
            ])
            ->to($mauticUserId); // Optional
    }
}

在此示例中,我们在 MauticMessage 中设置了令牌和接收者。令牌用于在 Mautic 邮件模板中添加占位符。接收者是可选的,将使用 $notifiable->routeNotificationFor('mautic') 作为后备。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 变更日志

贡献

有关详细信息,请参阅 贡献指南行为准则

安全性

如果您发现任何安全相关的问题,请通过电子邮件 security@swis.nl 报告,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件

此包是 Treeware。如果您在生产环境中使用它,那么我们要求您 为世界种一棵树,以感谢我们的工作。通过为 Treeware 森林做出贡献,您将为当地家庭创造就业机会并恢复野生动物栖息地。

SWIS ❤️ 开源

SWIS 是一家来自荷兰莱顿的网页代理机构。我们热爱与开源软件一起工作。