在 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
中声明了路线
我想使用 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
中声明了路线