在 Laravel 的 blade 模板函数中使用 Handlebars 数据

Use Handlebars data within Laravel's blade template function

我想使用 Handlebars 数据(即 {{ id }})作为 .blade 模板视图上 Laravel 辅助函数的参数。

我知道在使用像 @{{#each users}}@{{ name }} 这样的 .blade.php 扩展时转义 Handlebars 括号,并且效果很好。

当我想在 Laravel 的辅助函数中使用 @{{ id}} 时出现问题,因为嵌套的双花括号:

<a href="#" class="btn btn-xs btn-warning" data-route="{{ route('admin.membership.toggle-show-hide', ['id' => @{{ id }}]) }}">
    Hide
</a>

我知道这是行不通的,因为辅助函数 route 不希望参数数组中有大括号,但我仍然需要能够将数据从 Handlebars contex 传递到 Laravel's blade 模板视图上的辅助函数不知何故。

我尝试了不同的方法来实现这一点,但没有成功。

有没有人知道一些解决方法或对此有任何想法? 提前谢谢大家。

编辑

替代方案(我目前使用的)是编写一个 Handlebars 助手,它将接受所需的参数并为某些操作生成路由:

Handlebars.registerHelper("mmbrshpToggleShowHideRoute", function(id) {
    return APP_URL + '/admin/membership/' + id + '/toggleShowHide';
});

使用它,我可以在 Handlebars 模板(扩展名为 .blade.php)中为从 Laravel 的控制器检索到的 Handlebars JSON 上下文中的每个项目生成路由字符串:

<a href="#" class="btn btn-xs btn-success" data-route="{{ mmbrshpToggleShowHideRoute id }}">
    Hide
</a>

我不喜欢这种方法,因为我实际上是在 Handlebars 辅助函数中硬编码路由 URL。这有效并提供了整个视图和模板的可重用性,但如果有可能使用 Laravel 的 route 辅助函数生成路由并仅从 Handlebars 传递一个 id 参数会更好上下文。

事实上,您不能同时使用 JS 和 PHP variables/functions,因为 JS 变量可能会在 PHP 会话期间随时间变化。

当涉及 JS 时我不使用路由,我使用像 data-route="'/admin/membership/toggle/' + id"

这样的纯字符串路由

您可以使用此示例代码。

<a href=".URL::route('admin.membership.toggle-show-hide',[$id])." class="btn-blue">Hide</a>

如果您确实需要 "bulletproof" 解决方案来在前端更改路由,那么最方便的解决方案是在您的模型中创建一个路由访问器。像这样:

public function getRouteAttribute()
{
    return route('admin.membership.toggle-show-hide', ['id' => $this->id]);
}

然后你需要确保访问器在你的对象实例中始终可用(即使你 return JSON 响应)使用 $appends 属性 像这样:

protected $appends = ['route'];

应该是这样。

找到解决办法。突然谁需要 enter image description here

来自

{{ route('admin.membership.toggle-show-hide', ['id' => @{{ id }}]) }}

<?php echo route('admin.membership.toggle-show-hide', ['id' => {{ id }}]) ?>

我在车把上遇到了同样的问题,我用这个解决方案解决了它

我的问题: <button type="button" class="btn bg-orange btn-flat margin"><a href="{{ route('employee.purchases.show',[@{{ category_id }}]) }}"> View PO</a></button>

对此: <button type="button" class="btn bg-orange btn-flat margin"> <a href="../purchases/@{{ category_id }}/show" target="_blank">View PO</a> </button>

确保您在 web.php

中声明了路线