php - 在 Laravel 的 Blade 模板函数中使用 Handlebars 数据

标签 php laravel handlebars.js laravel-blade mustache

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

我知道在使用 .blade.php 扩展名时如何转义 Handlebars 括号,例如 @{{#each users}}@{{ name }} 并且效果很好.

当我想在 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 传递到 Blade 模板上的 Laravel 辅助函数中以某种方式查看。

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

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

编辑

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

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

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

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

我不喜欢这种方法,因为我实际上是在 Handlebars 辅助函数中对路由 URL 进行硬编码。这可以工作并在整个 View 和模板中提供可重用性,但如果可以使用 Laravel 的 route 辅助函数生成路线并仅从 Handlebars 传递 id 参数,那就更好了上下文。

最佳答案

如果您确实需要“防弹”解决方案来更改前端的路线,那么最方便的解决方案是在模型中为路线创建一个访问器。像这样的事情:

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

然后,您需要使用 $appends 属性确保对象实例中的访问器始终可用(即使您返回 JSON 响应),如下所示:

protected $appends = ['route'];

应该是这样。

关于php - 在 Laravel 的 Blade 模板函数中使用 Handlebars 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991807/

相关文章:

PHP/MYSQL - 选择选项值未发送?

单击按钮时未调用 JavaScript 函数

php - Laravel 数据透视表中的一对多关系?

php - Laravel5 (PHP) 还是 SailsJS (node.js)?

node.js - 调用助手(Handlebars)后无法访问数组元素

handlebars.js - handlebars.js {{#if}} 条件中的长度检查

javascript - ember Js 中的自动补全文本

php - 在不支持它的 php 5.2 上使用 CRYPT_BLOWFISH

php OOP调用当前类之外的类中的方法

laravel - 如何在迁移中定义外键?