rapidez / strapi
Rapidez Strapi
Installs: 2 528
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 3
Open Issues: 0
Requires
- php: ^8.0|^8.1|^8.2
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- illuminate/view: ^9.0|^10.0|^11.0
- rapidez/core: ~0.54|^1.0|^2.0
README
Requirements
A Strapi instance running, configured and filled with content types.
Installation
composer require rapidez/strapi
Add the Strapi url to your .env
:
STRAPI_URL=http://localhost:1337
Routes
Register some routes within routes/web.php
and use the strapi()
helper function to get the data. This function accepts the endpoint as parameter and just calls that endpoint and caches the response. For example:
Route::get('blog', function ($location) { return view('strapi.blog', ['data' => strapi('blogs')]) }); Route::get('blog/{slug}', function ($slug) { return view('strapi.blog-item', ['data' => strapi('blogs?slug='.$slug)[0]]) });
And use the data in your views. For example with {{ $data->name }}
you'll get the content of the name field.
Dynamic zones
When you're using a dynamic zone within your content type you can render them with a Blade directive:
@dynamiczone($data->content)
This tries to render views with the same name as the component and the data will be available with the $data
variable.
There is also a possibility to pass extra data to the template. For this you can pass an array as the second parameter:
@dynamiczone($data->content, ['foo' => 'bar', 'article' => $data])
The above example makes the variables $foo
and $article
available in the template
Cache
By default all responses from Strapi will be cached for 1 hour. You can change that with STRAPI_CACHE
in your .env
Automatic cache clearing
You can setup a webhook within Strapi which will be called when something changes. If you configure that with the cache clear url from Rapidez you don't have to worry about content not showing up after changes. See the Rapidez cache docs.
License
GNU General Public License v3. Please see License File for more information.