Skip to content

Helper Functions

Introduction

The package ships with a set of helper functions. These functions are all namespaced under Tonysm\\TurboLaravel\\ but we also add them globally for convenience.

The dom_id()

The mentioned namespaced dom_id() helper function may also be used from anywhere in your application, like so:

use function Tonysm\TurboLaravel\dom_id;
 
dom_id($comment);

When a new instance of a model is passed to any of these DOM ID helpers, since it doesn't have an ID, it will prefix the resource name with a create_ prefix. This way, new instances of an App\\Models\\Comment model will generate a create_comment DOM ID.

These helpers strip out the model's FQCN (see config/turbo-laravel.php if you use an unconventional location for your models).

The dom_class()

The dom_class() helper function may be used from anywhere in your application, like so:

use function Tonysm\TurboLaravel\dom_class;
 
dom_class($comment);

This function will generate the DOM class named based on your model's classname. If you have an instance of a App\Models\Comment model, it will generate a comment DOM class.

Similarly to the dom_id() function, you may also pass a context prefix as the second parameter:

dom_class($comment, 'reactions_list');

This will generate a DOM class of reactions_list_comment.

The turbo_stream()

You may generate Turbo Streams using the Response::turboStream() macro, but you may also do so using the turbo_stream() helper function:

use function Tonysm\TurboLaravel\turbo_stream;
 
turbo_stream()->append($comment);

Both the Response::turboStream() and the turbo_stream() function work the same way. The turbo_stream() function may be easier to use.

The turbo_stream_view()

You may combo Turbo Streams using the turbo_stream([]) function passing an array, but you may prefer to create a separate Blade view with all the Turbo Streams, this way you may also use template extensions and everything else Blade offers:

use function Tonysm\TurboLaravel\turbo_stream_view;
 
return turbo_stream_view('comments.turbo.created', [
'comment' => $comment,
]);

All these functions are also registered globally, so you may use it directly without the use statements (this is useful in contexts like Blade views, for instance).

Continue to Turbo Streams...