sensiolabs-de / storyblok-api
Storyblok API
3.0.0
2024-09-16 12:33 UTC
Requires
- php: >=8.3
- oskarstark/trimmed-non-empty-string: ^1.1
- psr/log: ^3.0
- symfony/cache: ^7.0
- symfony/cache-contracts: ^3.5
- symfony/http-client: ^6.0 || ^7.0
- 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
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-webmozart-assert: ^1.0
- phpunit/phpunit: ^9.0
- thecodingmachine/phpstan-safe-rule: ^1.0
README
使用方法
安装
composer require sensiolabs-de/storyblok-api
设置
use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient( baseUri: 'https://api.storyblok.com', token: '***********', timeout: 10 // optional ); // you can now request any endpoint which needs authentication $client->request('GET', '/api/something', $options);
空间
在您的代码中,应该使用类型提示 SensioLabs\Storyblok\Api\SpacesApiInterface
获取当前空间
返回与当前令牌关联的空间。
use SensioLabs\Storyblok\Api\SpacesApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $spacesApi = new SpacesApi($client); $response = $spacesApi->me();
故事
在您的代码中,应该使用类型提示 SensioLabs\Storyblok\Api\StoriesApiInterface
获取所有可用的故事
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->all(locale: 'de');
分页
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Dto\Pagination; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->all( locale: 'de', pagination: new Pagination(page: 1, perPage: 30) );
排序
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Dto\SortBy; use SensioLabs\Storyblok\Api\Domain\Value\Dto\Direction; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->all( locale: 'de', sortBy: new SortBy(field: 'title', direction: Direction::Desc) );
过滤
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Filter\FilterCollection; use SensioLabs\Storyblok\Api\Domain\Value\Dto\Direction; use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\InFilter; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->all( locale: 'de', filters: new FilterCollection([ new InFilter(field: 'single_reference_field', value: 'f2fdb571-a265-4d8a-b7c5-7050d23c2383') ]) );
可用的过滤器
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\AllInArrayFilter; new AllInArrayFilter(field: 'tags', value: ['foo', 'bar', 'baz']);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\AnyInArrayFilter; new AnyInArrayFilter(field: 'tags', value: ['foo', 'bar', 'baz']);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\GreaterThanDateFilter; new GreaterThanDateFilter(field: 'created_at', value: new \DateTimeImmutable());
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\LessThanDateFilter; new LessThanDateFilter(field: 'created_at', value: new \DateTimeImmutable());
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\GreaterThanFloatFilter; new GreaterThanFloatFilter(field: 'price', value: 39.99);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\LessThanFloatFilter; new LessThanFloatFilter(field: 'price', value: 199.99);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\GreaterThanIntFilter; new GreaterThanIntFilter(field: 'stock', value: 0);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\LessThanIntFilter; new LessThanIntFilter(field: 'stock', value: 100);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\InFilter; new InFilter(field: 'text', value: 'Hello World!'); // or new InFilter(field: 'text', value: ['Hello Symfony!', 'Hello SensioLabs!']);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\NotInFilter; new NotInFilter(field: 'text', value: 'Hello World!'); // or new NotInFilter(field: 'text', value: ['Bye Symfony!', 'Bye SensioLabs!']);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\IsFilter; // You can use one of the following constants: // IsFilter::EMPTY_ARRAY // IsFilter::NOT_EMPTY_ARRAY // IsFilter::EMPTY // IsFilter::NOT_EMPTY // IsFilter::TRUE // IsFilter::FALSE // IsFilter::NULL // IsFilter::NOT_NULL new IsFilter(field: 'text', value: IsFilter::EMPTY);
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\LikeFilter; new LikeFilter(field: 'description', value: '*I love Symfony*');
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\NotLikeFilter; new NotLikeFilter(field: 'description', value: '*Text*');
示例
use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\OrFilter; use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\LikeFilter; use SensioLabs\Storyblok\Api\Domain\Value\Filter\Filters\NotLikeFilter; new OrFilter( new LikeFilter(field: 'text', value: 'Yes!*'), new LikeFilter(field: 'text', value: 'Maybe!*'), // ... );
通过内容类型(string
)获取所有可用的故事
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->allByContentType('custom_content_type', locale: 'de');
通过 uuid(SensioLabs\Storyblok\Api\Domain\Value\Uuid
)获取
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Uuid; $uuid = new Uuid(/** ... */); $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->byUuid($uuid, locale: 'de');
通过 slug(string
)获取
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->bySlug('folder/slug', locale: 'de');
通过 id(SensioLabs\Storyblok\Api\Domain\Value\Id
)获取
use SensioLabs\Storyblok\Api\StoriesApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Id; $id = new Id(/** ... */); $client = new StoryblokClient(/* ... */); $storiesApi = new StoriesApi($client); $response = $storiesApi->byId($id, locale: 'de');
链接
在您的代码中,应该使用类型提示 SensioLabs\Storyblok\Api\LinksApiInterface
获取所有可用的链接
use SensioLabs\Storyblok\Api\LinksApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $linksApi = new LinksApi($client); $response = $linksApi->all();
分页
use SensioLabs\Storyblok\Api\LinksApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Dto\Pagination; $client = new StoryblokClient(/* ... */); $linksApi = new LinksApi($client); $response = $linksApi->all( pagination: new Pagination(page: 1, perPage: 1000) );
通过父级(SensioLabs\Storyblok\Api\Domain\Value\Id
)获取
use SensioLabs\Storyblok\Api\LinksApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Id; $id = new Id(/** ... */); $client = new StoryblokClient(/* ... */); $linksApi = new LinksApi($client); $response = $linksApi->byParent($id);
获取所有根链接
use SensioLabs\Storyblok\Api\LinksApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $linksApi = new LinksApi($client); $response = $linksApi->roots($id);
数据源
在您的代码中,应该使用类型提示 SensioLabs\Storyblok\Api\DatasourceApiInterface
通过名称(string
)获取
use SensioLabs\Storyblok\Api\DatasourceApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $api = new DatasourceApi($client); $response = $api->byName('tags'); // returns SensioLabs\Storyblok\Api\Domain\Value\Datasource
如果它具有多个维度,您可以通过以下方式获取条目:
use SensioLabs\Storyblok\Api\DatasourceApi; use SensioLabs\Storyblok\Api\StoryblokClient; use SensioLabs\Storyblok\Api\Domain\Value\Datasource\Dimension; $client = new StoryblokClient(/* ... */); $api = new DatasourceApi($client); $response = $api->byName('tags', new Dimension('de')); // returns SensioLabs\Storyblok\Api\Domain\Value\Datasource
标签
在您的代码中,应该使用类型提示 SensioLabs\Storyblok\Api\TagsApiInterface
获取所有可用的标签
use SensioLabs\Storyblok\Api\TagsApi; use SensioLabs\Storyblok\Api\StoryblokClient; $client = new StoryblokClient(/* ... */); $api = new TagsApi($client); $response = $api->all(); // returns SensioLabs\Storyblok\Api\Response\TagsResponse