awcodes/matinee

Filament Panel 和表单构建器使用的 OEmbed 字段。

资助包维护!
awcodes

v1.0.2 2024-07-29 14:09 UTC

This package is auto-updated.

Last update: 2024-08-29 14:16:46 UTC


README

OEmbed 和视频字段用于 Filament Panel 和表单构建器

Latest Version on Packagist Total Downloads

table repeater opengraph image

安装

您可以通过 composer 安装此包。

composer require awcodes/matinee

重要

如果您尚未设置自定义主题并且正在使用面板,请首先按照 Filament 文档 中的说明进行操作。以下内容适用于面板包和独立的表单包。

将插件的视图添加到您的 tailwind.config.js 文件中。

content: [
    './vendor/awcodes/matinee/resources/views/**/*.blade.php',
]

重新构建您的自定义主题。

npm run build

准备您的模型

Matinee 将其内容作为 JSON 数据存储在您的模型的单列中。因此,在您的模型中将该列转换为数组或 JSON 对象至关重要。

protected $casts = [
    'video' => 'array', // or 'json'
];

使用方法

use Awcodes\Matinee\Matinee;

Matinee::make('video')

强制预览显示

use Awcodes\Matinee\Matinee;

Matinee::make('video')
    ->showPreview()

自定义提供者

Matinee 包含 YouTube 和 Vimeo 的提供者,但您可以通过创建一个类并将其传递到字段的 providers 调整器中来添加自己的提供者。

use Awcodes\Matinee\Providers\Concerns\IsMatineeProvider;
use Awcodes\Matinee\Providers\Contracts\MatineeProvider;

class CustomProvider implements MatineeProvider
{
    use IsMatineeProvider;

    public function getId(): ?string
    {
        return 'custom';
    }

    public function getDomains(): array
    {
        return [
            'custom.com',
        ];
    }

    public function getOptions(): array
    {
        return [
            'controls' => 1,
            'title' => 0,
        ];
    }

    public function convertUrl(?array $options = []): string
    {
        return 'https://www.custom.com/embed/' . $this->getId() . '?' . http_build_query($options);
    }
}

然后,您可以通过将其传递到字段实例的 providers 调整器或通过服务提供者的 register 方法的 configureUsing() 方法全局传递它来使用它。

use Awcodes\Matinee\Matinee;

Matinee::make('video')
    ->providers([CustomProvider::class])

渲染视频

您可以根据自己的喜好以任何方式渲染视频,但 Matinee 提供了一个用于便利的 blade 组件。

<x-matinee::embed :data="$data" />

存储的数据将具有以下形状

{
    "width": "16",
    "height": "9",
    "responsive": true,
    "url": "https:\/\/www.youtube.com\/watch?v=N9qZFD1NkhI",
    "embed_url": "https:\/\/www.youtube.com\/embed\/N9qZFD1NkhI?controls=1&start=0",
    "options": {
        "controls": "1",
        "nocookie": "0",
        "start": "00:00:00"
    }
}

测试

composer test

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

有关如何报告安全漏洞,请参阅 我们的安全策略

鸣谢

许可协议

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