maximilianradons/laravel-strapi

Laravel的Strapi无头CMS包装器

资助包维护!
bbwmc

v2.0.4 2022-02-21 19:06 UTC

This package is auto-updated.

Last update: 2024-09-09 11:24:25 UTC


README

此存储库是dbfx/laravel-strapi的分支,归功于Dave BlakeyBBWMC

Laravel-Strapi是用于Strapi V4无头CMS的Laravel辅助工具。

安装

您可以通过composer安装此包

composer require maximilianradons/laravel-strapi

您可以使用以下命令发布和运行迁移

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="MaximilianRadons\LaravelStrapi\LaravelStrapiServiceProvider" --tag="strapi-config"

您需要在.env中定义STRAPI_URL(不带/api路径)和STRAPI_CACHE_TIME

STRAPI_URL=https://strapi.test.com
STRAPI_CACHE_TIME=3600

授权(可选)

在您的管理面板中创建一个Bearer令牌并将其添加到.env中

STRAPI_API_TOKEN=your_api_token

缓存清除(可选)

要在内容更新时清除Strapi缓存,您需要在Strapi管理面板中创建一个Webhook。设置一个url和一个带有“Authorization”键的header和一个随机字符串作为值,并将其添加到您的.env中

STRAPI_WEBHOOK_URL=https://:8000/strapi-cache-webhook
STRAPI_WEBHOOK_SIGNATURE=your_random_string
STRAPI_CLEAR_CACHE_ON_WEBHOOK=true //default true

在您的应用中,您可以使用StrapiWebhook事件来实现自己的逻辑来清除缓存(如果需要)。向您的应用添加事件监听器,您还需要在EventServiceProvider中注册监听器。

用法

laravel-strapi提供了collection()和entry()调用,用于返回完整集合或集合中的特定条目。在下面的示例中,我们正在查询strapi集合'blogs',然后从该集合中获取id为1的条目。

use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();
$blogs = $strapi->collection('blogs');
$entry = $strapi->entry('blogs', 1);

还有几个有用的选项可供选择。

  • $sortKey$sortOrder允许您指定排序的键和方向
  • $fullUrls将自动将您的STRAPI_URL添加到任何相对URL的前面(例如,图像等)。
  • $limit设置请求的项目数量
  • $start是用于limit的偏移量,对于分页很有用
use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();
$blogs = $strapi->collection('blogs', $sortKey = 'id', $sortOrder = 'DESC', $limit = 20, $start = 0, $fullUrls = true);

$entry = $strapi->entry('blogs', 1, $fullUrls = true);

您还可以如下访问单个类型的项目

use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();

// Fetch the full homepage array
$homepageArray = $strapi->single('homepage');

// Return just the ['content'] field from the homepage array
$homepageItem = $strapi->single('homepage', 'content');

您还可以通过搜索自定义字段(例如,slug)来选择条目

use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();

$entries = $strapi->entriesByField('blogs', 'slug', 'test-blog-post');

填充深层次关系

use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();

// load all relations one Level deep 
$homepageArray = $strapi->populate(['*'])->single('homepage');

// 2 Level or deeper example
$homepageArray = $strapi->populate(['homepage.navbar.links', 'homepage.metadata'])->single('homepage');

使用2个组件深度填充动态区域,示例来自Strapi API文档

use MaximilianRadons\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();

$query = [
    'populate' => [
        'testDZ' => [
            'populate' => '*'
        ],
    ]
];

$homepageArray = $strapi->query($query)->single('articels');

$query = [
    'fields' => ['title', 'slug'],
    'populate' => [
        'headerImage' => [
            'fields' => ['name', 'url']
        ],
    ]
];

$homepageArray = $strapi->query($query)->single('articels');

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

致谢

许可证

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