sensiolabs-de / storyblok-bundle
Sensiolabs-de/storyblok-api 的 Symfony 扩展包
Requires
- php: >=8.3
- oskarstark/enum-helper: ^1.5
- psr/log: ^3.0
- sensiolabs-de/storyblok-api: ^3.2.0
- symfony/config: ^6.0 || ^7.0
- symfony/dependency-injection: ^6.0 || ^7.0
- symfony/framework-bundle: ^6.0 || ^7.0
- symfony/http-client: ^6.0 || ^7.0
- symfony/http-kernel: ^6.0 || ^7.0
- symfony/monolog-bundle: ^3.10
- thecodingmachine/safe: ^2.0
- webmozart/assert: ^1.11
Requires (Dev)
- ergebnis/composer-normalize: ^2.2
- ergebnis/data-provider: ^3.2
- ergebnis/php-cs-fixer-config: ^6.28
- ergebnis/test-util: ^1.5
- matthiasnoback/symfony-config-test: ^5.2
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-webmozart-assert: ^1.0
- phpunit/phpunit: ^9.0
- symfony/event-dispatcher: ^6.0 || ^7.1
- thecodingmachine/phpstan-safe-rule: ^1.0
This package is auto-updated.
Last update: 2024-09-30 12:46:21 UTC
README
一个用于将 Storyblok 头部 CMS 集成到您的 Symfony 应用的 Symfony 扩展包。
此扩展包利用 sensiolabs-de/storyblok-api,一个为 Storyblok 提供类型安全的 PHP SDK。它配置 Storyblok 客户端并提供一个用于简化调试和监控 Storyblok API 交互的 Symfony Profiler 扩展。
安装
要安装此扩展包,请运行
composer require sensiolabs-de/storyblok-api sensiolabs-de/storyblok-bundle
配置
Symfony Flex
如果您使用 symfony/flex,扩展包将自动启用,配置文件将添加到您的项目中。
手动配置
如果 symfony/flex 不可用或您希望手动设置,请按照以下步骤操作
-
添加配置 将以下配置添加到您的
config/packages/storyblok.yamlstoryblok: base_uri: '%env(STORYBLOK_API_BASE_URI)%' token: '%env(STORYBLOK_API_TOKEN)%'
如果您想使用 AssetsApi,也可以添加以下配置
storyblok: # ... assets_token: '%env(STORYBLOK_ASSETS_API_TOKEN)%'
-
设置环境变量 在您的
.env文件中定义必要的环境变量STORYBLOK_API_BASE_URI=https://api.storyblok.com/v1 STORYBLOK_API_TOKEN=your_storyblok_api_token
使用方法
API 使用
设置好扩展包后,您可以在您的 Symfony 应用程序中使用 Storyblok 客户端与 Storyblok CMS API 交互。
有关详细使用方法和示例,请参阅 Storyblok API SDK 文档。
Webhooks
Storyblok Webhooks 允许您的 Symfony 应用程序对内容更改等事件做出反应。此扩展包提供处理这些 Webhooks 的简单设置。
配置
要启用 Webhooks,将以下路由添加到您的应用程序
# config/routes/storyblok.yaml storyblok: resource: '@StoryblokBundle/config/routes.php'
这将使 /storyblok/webhook 路由可用,以接收 Webhook 请求。有关 Webhooks 的工作原理的更多详细信息,请参阅 Storyblok Webhooks 文档。
验证 Webhook 签名(安全性)
为了安全性,您可以启用 Webhook 签名的验证,以确保请求来自 Storyblok。这是通过配置一个 webhook_secret 来实现的
# config/packages/storyblok.yaml storyblok: # ... webhook_secret: '%env(STORYBLOK_WEBHOOK_SECRET)%'
您需要在您的 .env 文件中设置此密钥
STORYBLOK_WEBHOOK_SECRET=your_webhook_secret
启用后,扩展包将自动将每个 Webhook 请求与该密钥进行验证。
处理 Webhook 事件
要处理 Webhooks,实现 WebhookHandlerInterface。扩展包自动将实现此接口的任何类注册为 Webhook 处理程序,无需额外的服务配置。
示例 Webhook 处理程序
以下是一个示例 Webhook 处理程序,它会在发生某些事件(例如内容发布或删除)时清除 Varnish 缓存
<?php namespace App\Webhook; use SensioLabs\Storyblok\Bundle\Webhook\Event; use SensioLabs\Storyblok\Bundle\Webhook\Handler\WebhookHandlerInterface; final class PurgeVarnishHandler implements WebhookHandlerInterface { public function handle(Event $event, array $payload): void { // Your custom logic for handling the event // Example: purging Varnish cache } public function supports(Event $event): bool { // Specify the events your handler supports return $event->equalsOneOf([ Event::StoryPublished, Event::StoryUnpublished, Event::StoryDeleted, Event::StoryMoved, ]); } public static function priority(): int { // Define the priority for your handler return -2000; } }
最佳实践
- 仅处理必要的事件:使用
supports方法过滤处理程序应处理的 Webhook 事件。 - 优先处理程序:如果您有多个处理程序,请适当地设置优先级。优先级更高的处理程序(整数值更低)将首先执行。
- 添加日志记录:记录传入的 Webhooks 和执行的操作是个好主意,特别是用于调试和监控。
这种方案提供了一种简化和安全的方式来处理来自Storyblok的Webhooks,允许您的Symfony应用程序有效地响应变化。有关更多细节和用例,您可以随时参考Storyblok API SDK文档。