bensampo/laravel-embed

视频、幻灯片等内容的无缝响应式嵌入。

资助包维护!
bensampo

v2.5.0 2024-04-24 15:09 UTC

This package is auto-updated.

Last update: 2024-08-24 15:53:41 UTC


README

Laravel Embed

视频、幻灯片等内容的无缝响应式嵌入。
Ben Sampson创建

Packagist Stable Version Packagist downloads MIT Software License

需求

  • Laravel 8 或更高版本
  • PHP 7.4.0 或更高版本

安装

1. Composer

composer require bensampo/laravel-embed

2. 包含样式

在文档的<head>元素内部某处包含

<x-embed-styles />

如果你希望在自己的CSS文件中包含样式,你可以复制styles.blade.php的内容。

3. 发布视图(可选)

如果你想编辑任何视图,你可以发布它们

php artisan vendor:publish --provider="BenSampo\Embed\EmbedServiceProvider"

发布后,它们可以在/resources/views/vendor/embed/中找到。

使用方法

只需在你的视图中包含以下blade组件,确保传递url属性。

url应该是你想要嵌入的页面的公共URL。

<x-embed url="https://www.youtube.com/watch?v=oHg5SJYRHA0" />

设置宽高比

默认情况下,大多数嵌入服务以16:9的比例显示。某些服务可能具有更合适的默认值并覆盖此设置。但是,你可以通过传递给aspect-ratio属性的比例来更改此设置。

<x-embed url="https://www.youtube.com/watch?v=oHg5SJYRHA0" aspect-ratio="4:3" />

宽高比在不同视口大小上保持不变。

回退

如果不存在处理URL的服务,将渲染回退视图。你可以通过发布视图并编辑/resources/views/vendor/embed/services/fallback.blade.php来自定义它。

验证

可以使用验证规则来检查给定URL中是否支持服务。

use BenSampo\Embed\Rules\EmbeddableUrl;

public function store(Request $request)
{
    $this->validate($request, [
        'url' => ['required', new EmbeddableUrl],
    ]);
}

你可以使用allowedServices方法指定允许的服务列表。

use BenSampo\Embed\Services\Vimeo;
use BenSampo\Embed\Services\YouTube;
use BenSampo\Embed\Rules\EmbeddableUrl;

public function store(Request $request)
{
    $this->validate($request, [
        'url' => [
            'required',
            (new EmbeddableUrl)->allowedServices([
                YouTube::class,
                Vimeo::class
            ])
        ],
    ]);
}

嵌入服务

Laravel embed支持多个流行的嵌入服务,如YouTube、Vimeo和Slideshare。

查看完整列表→

如果你想要嵌入的服务没有列出,请提交问题(或者更好的是提交PR!)。