ambengers/
kinetic
g4t.io

Kinetic: A view-composer package for Inertia.js

by Paul Redmond

Kinetic adds view-composer-like features to the Inertia.js Laravel adapter.

README from ambengers/kinetic Open on GitHub →

Kinetic

A package that adds view-composer like feature to Inertia.js Laravel adapter.

Use to be able to share props based on the Inertia component name.

Tests

Note: The package automatically uses Inertia.js 3.x on PHP 8.4+ and Inertia.js 2.x on older PHP versions.

Versions

InertiaJS Kinetic PHP Requirement
^3.0 ^3.0 PHP 8.4+
^2.0 ^2.0 PHP 8.0+
~0.5 to ^1.0 1.9 PHP 7.3+

"This package was created and maintained by the team behind SignDeck — a lightweight e-signature platform for collecting documents and signatures."

Installation

composer require ambengers/kinetic

Usage

This should be very intuitive if you are already familiar on how view composers work in Laravel.

Basic Registration

You can use Inertia::composer() in any service provider to register composers for specific components. The first argument accepts either a string or an array of Inertia components, and the second argument accepts either class string or a closure.

use Inertia;
use Inertia\ResponseFactory;
use App\Composers\UserComposer;

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Class-based Composer..
        Inertia::composer('User/Profile', UserComposer::class);

        // Closure-based Composer..
        Inertia::composer('User/Profile', function (ResponseFactory $inertia) {
            //
        });
    }
}

Wildcard Registration

You can also register composers to multiple components, or globally, using the wildcard * syntax.

// Components within User directory will receive data from UserComposer class
Inertia::composer('User/*', UserComposer::class);

// All components will receive data from GlobalComposer class
Inertia::composer('*', GlobalComposer::class);

Class-based Composers

You can generate your composer class using this command:

php artisan kinetic:composer UserComposer

Then you can call the $inertia->with() method within the compose method to set the composed props, like so:

class UserComposer
{
    public function compose(ResponseFactory $inertia)
    {
        $inertia->with('list',  ['foo' => 'bar', 'baz' => 'buzz']);
    }
}

Closure-based Composers

If you opt for a closure-based composer, your closure must accept an instance of Inertia\ResponseFactory class as the first argument. Then you can call the with() method from the factory class to set the composed props like so:

Inertia::composer('User/Profile', function (ResponseFactory $inertia) {
    $inertia->with([
        'post' => [
            'subject' => 'Hello World!', 'description' => 'This is a description.'
         ]
    ]);
});

Multiple Composers

You can also set multiple composers to components using array, like so:

Inertia::composer(['User/Profile', 'User/Index'], [
    UserComposer::class,
    function (ResponseFactory $inertia) {
        $inertia->with(...);
    }
]);

The array will be automatically merged with any existing composers for the components.

When you call the Inertia::render('User/Profile') the props should now include the composed data.

Security

If you discover any security related issues, please send the author an email instead of using the issue tracker.

License

Please see the license file for more information.

More from the ecosystem

marcreichel/
laya-php
g4t.io
3 53

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Classify text in PHP without an LLM bill: typed decisions in 100+ languages, self-hosted. Laravel-ready SDK for Laya, a Jev AI alternative.

ai classification decision-engine
marcreichel/laya-php via Laravel News
Josh-Dovey/
postcodes-laravel
g4t.io
5 9

Postcodes for Laravel: GB Postcode Lookup and Geography Data

Postcodes for Laravel adds typed GB postcode lookups, validation, geography data, distance searches, and test fakes through the GB Postcodes API.

Josh-Dovey/postcodes-laravel via Laravel News
RedberryProducts/
mailbox-for-laravel
g4t.io
4 115

Mailbox for Laravel: Preview and Test Rendered Email

Mailbox for Laravel captures outgoing mail in a local dashboard and lets you test rendered HTML, recipients, and attachments with fluent assertions.

RedberryProducts/mailbox-for-laravel via Laravel News