flexacms / laravel
Laravel client for the Flexa headless CMS: fluent queries, caching and typed entries.
Requires
- php: ^8.2
- illuminate/cache: ^12.0 || ^13.0
- illuminate/http: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
Requires (Dev)
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^3.0 || ^4.0 || ^5.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel client for the Flexa headless CMS: fluent queries, Laravel paginators, caching and translatable values.
This repository is a read-only split of flexacms/sdk. Open issues and pull requests there.
composer require flexacms/laravel
FLEXA_URL=https://cms.example.com FLEXA_API_KEY=flx_...
use FlexaCms\Laravel\Facades\Flexa; $posts = Flexa::entity('posts')->published()->paginate(12); // LengthAwarePaginator of Entry $post = Flexa::entity('posts')->findOrFail($slug); // 404 when missing $post->title; $post->value('headline'); // translatable values resolve to app()->getLocale() $post->value('headline', 'en'); $post['rating'];
@foreach ($posts as $post) <a href="{{ route('blog.show', $post->slug) }}">{{ $post->value('headline') }}</a> @endforeach {{ $posts->links() }}
Queries
published(), status(), search(), category() and withRelations() filter; paginate(), all(), cursor() (lazy), find(), findOrFail() and schema() read. Queries are immutable, so a base query can be shared.
Writes need a key with the Write or Delete ability: create(), update(), delete($id, force: true) and restore(). Failures throw FlexaCms\Laravel\Exceptions\FlexaException with status and validation errors.
Cache
Reads are cached for 60 seconds (FLEXA_CACHE_TTL, 0 to disable) in the default store (FLEXA_CACHE_STORE). Per query: ->cache(3600) or ->cache(0). Clear everything with Flexa::flushCache().
php artisan vendor:publish --tag=flexa-config