maximilianradons / laravel-strapi
Laravel的Strapi无头CMS包装器
v2.0.4
2022-02-21 19:06 UTC
Requires
- php: ^7.3|^7.4|^8.0|^8.1
- illuminate/contracts: ^8.37
- laravel/framework: ^8
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^5.3
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
README
此存储库是dbfx/laravel-strapi的分支,归功于Dave Blakey和BBWMC。
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)。有关更多信息,请参阅许可证文件。