kamil-malinski/laravel-strapi

Laravel的Strapi无头CMS封装器

v2.0.5 2022-03-09 17:01 UTC

This package is auto-updated.

Last update: 2024-09-09 22:11:50 UTC


README

此仓库是MaximilianRadons/laravel-strapi的分支,感谢Dave BlakeyBBWMCMaximilianRadons的贡献。

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

安装

您可以通过composer安装此包

composer require kamil-malinski/laravel-strapi

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

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

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

您需要在.env文件中定义STRAPI_URL(不包含/api路径)和STRAPI_CACHE_TIME

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

授权(可选)

在您的管理面板中创建一个bearer token并将其添加到.env文件中

STRAPI_API_TOKEN=your_api_token

缓存刷新(可选)

为了在内容更新时刷新Strapi缓存,您需要在Strapi管理面板中创建一个Webhook。设置一个url和一个带有Key "Athorization"和随机字符串作为Value的header,并将其添加到您的.env文件中

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

使用方法

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

use KamilMalinski\LaravelStrapi\LaravelStrapi;

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

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

  • $sortKey$sortOrder允许您指定排序的键和方向
  • $fullUrls会自动将STRAPI_URL添加到任何相对URL的前面(例如,图像等)。
  • $limit设置您请求的项目数量
  • $start是与limit一起使用的偏移量,对分页很有用
use KamilMalinski\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 KamilMalinski\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 KamilMalinski\LaravelStrapi\LaravelStrapi;

$strapi = new LaravelStrapi();

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

填充深度关系

use KamilMalinski\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 KamilMalinski\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)。请参阅许可证文件以获取更多信息。