I want to use Handlebars data (i.e. {{ id }}
) as a parameter in Laravel helper function on .blade template view.
I know about escaping Handlebars brackets when using .blade.php extension like @{{#each users}}
or @{{ name }}
and that works perfectly.
The problem comes when I want to use @{{ id}}
within Laravel's helper function because of nested double curly brackets:
<a href="#" class="btn btn-xs btn-warning" data-route="{{ route('admin.membership.toggle-show-hide', ['id' => @{{ id }}]) }}">
Hide
</a>
I know this can't work because helper function route
doesn't expect curly bracket in parameters array but I still need to be able to pass data from Handlebars contex into Laravel's helper function on blade template view somehow.
I tried different ways to achieve this, but without success.
Does anyone knows some workaround or has any idea for this? Thank you all in advance.
EDIT
The alternative (which I currently use) is to write a Handlebars helper which will accept needed parameter and generate route for some action:
Handlebars.registerHelper("mmbrshpToggleShowHideRoute", function(id) {
return APP_URL + '/admin/membership/' + id + '/toggleShowHide';
});
Using this, I can generate route string in Handlebars template (with .blade.php extension) for each item in Handlebars JSON context retrieved from Laravel's controller:
<a href="#" class="btn btn-xs btn-success" data-route="{{ mmbrshpToggleShowHideRoute id }}">
Hide
</a>
I don't like this approach because I'm actually hardcoding the route URL in Handlebars helper function. This works and provides reusabillity throughout the views and templates, but it would be nicer if there was possibility to generate route using Laravel's route
helper function and just pass an id
parameter from Handlebars context.