dbfx / laravel-strapi
Laravel wrapper for using the Strapi headless CMS
Fund package maintenance!
dbfx
Installs: 17 622
Dependents: 0
Suggesters: 0
Security: 0
Stars: 47
Watchers: 2
Forks: 27
Open Issues: 7
Requires
- php: ^7.4 || ^8.0
- illuminate/contracts: ^8.37 || ^9.0 || ^10
- laravel/framework: ^8 || ^9 || ^10
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- brianium/paratest: ^6.2
- ergebnis/composer-normalize: ^2.42
- friendsofphp/php-cs-fixer: ^3.48
- nunomaduro/collision: ^5.3 || ^6.0
- orchestra/testbench: ^6.15
- phpro/grumphp-shim: ^1.13
- phpunit/phpunit: ^9.3
- rector/rector: ^0.19.5
- roave/security-advisories: dev-latest
- spatie/laravel-ray: ^1.9
- vimeo/psalm: ^5.7
This package is auto-updated.
Last update: 2024-11-08 04:23:08 UTC
README
Laravel-Strapi is a Laravel helper for using the Strapi headless CMS.
Note: for Strapi v3 support use version 2.x.x
Installation
You can install the package via composer:
composer require dbfx/laravel-strapi
You can publish and run the migrations with:
You can publish the config file with:
php artisan vendor:publish --provider="Dbfx\LaravelStrapi\LaravelStrapiServiceProvider" --tag="strapi-config"
You need to define your STRAPI_URL and STRAPI_CACHE_TIME in .env: You can also optionally define a STRAPI_TOKEN to enable authentication. Do not include 'Bearer' only the token itself.
STRAPI_URL=https://strapi.test.com
STRAPI_CACHE_TIME=3600
STRAPI_TOKEN=abcd1234abcd1234
Usage
laravel-strapi provides the collection() and entry() calls to return a full collection, or a specific entry from a collection. In the example below we are querying the strapi collection 'blogs' and then getting the entry with id 1 from that collection.
use Dbfx\LaravelStrapi\LaravelStrapi; $strapi = new LaravelStrapi(); $blogs = $strapi->collection('blogs'); $entry = $strapi->entry('blogs', 1);
There are several useful options available as well.
$sortKey
and$sortOrder
allow you to specify the key to sort on and the direction$fullUrls
will automatically add your STRAPI_URL to the front of any relative URLs (e.g. images, etc).$limit
sets how many items you are requesting$start
is the offset to be used with limit, useful for pagination$populate
is an array containing the fields to populate$queryData
is an array of additional key-value pairs to add to the query string
use Dbfx\LaravelStrapi\LaravelStrapi; $strapi = new LaravelStrapi(); $blogs = $strapi->collection('blogs', $sortKey = 'id', $sortOrder = 'DESC', $limit = 20, $start = 0, $fullUrls = true, $populate = ['author', 'images'], $queryData = ['locale' => 'en']); $entry = $strapi->entry('blogs', 1, $fullUrls = true, $populate = ['author', 'images'], $queryData = ['locale' => 'en']);
You may also access Single Type items as follows:
use Dbfx\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');
And you may select entries by searching for a custom field (e.g. slug):
use Dbfx\LaravelStrapi\LaravelStrapi; $strapi = new LaravelStrapi(); $entries = $strapi->entriesByField('blogs', 'slug', 'test-blog-post');
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Credits
License
The MIT License (MIT). Please see License File for more information.