kamil-malinski / laravel-strapi
Laravel的Strapi无头CMS封装器
v2.0.5
2022-03-09 17:01 UTC
Requires
- php: ^7.3|^7.4|^8.0|^8.1
- illuminate/contracts: ^8.37|^9.0
- laravel/framework: ^8|^9
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- nunomaduro/collision: ^5.3|^6.0
- orchestra/testbench: ^6.15
- phpunit/phpunit: ^9.3
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^4.4
README
此仓库是MaximilianRadons/laravel-strapi的分支,感谢Dave Blakey,BBWMC和MaximilianRadons的贡献。
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)。请参阅许可证文件以获取更多信息。