【问题标题】:How to pass Vue.js variable to Laravel Blade route helper如何将 Vue.js 变量传递给 Laravel Blade 路由助手
【发布时间】:2020-02-05 06:22:48
【问题描述】:

例如,我的模板中有指向其他类似帖子的链接

<a href="{{ route('post', ['post' => @{{ post.id }}]) }}">My post</a>

我希望能够使用路由助手中的 post 对象来使用 id。

这个用例有什么语法吗?

或者有其他方法吗?

【问题讨论】:

  • 这里没有语法,因为 Vue 2 无论如何都不允许在 HTML 属性中进行字符串插值,编辑您的问题并添加您的完整视图,post 对象来自哪里?
  • 这是一个非常丑陋的方式,你绝对应该避免codesandbox.io/s/vue-template-fwgmy

标签: laravel vue.js laravel-blade


【解决方案1】:

实际上我有类似的问题来解决这种情况。您的问题与 Vue 完全相关,但下面的方法也可以用于您的案例。无论如何,您不能同时执行 JS 和 PHP,因为它们在不同的方面工作。但由于我也喜欢所有路线都带有别名,所以我认为这种方法..你可以模仿这样的东西:

Route::get('/', 'PostController@all')->name('all'); // all posts page
Route::get('post', 'PostController@all')->name('all_page'); // THIS IS THE THING (one additional route), WHICH WILL TAKE RESPONSIBILITY ON CASE, WHEN post_id WILL BE EMPTY
Route::get('post/{post_id}', 'PostController@post')->name('post');

此方法将允许您像往常一样使用第 1 条和第 3 条路线,也可以像这样在应用程序的不同位置混合使用:

{{ route('post.all') }}
{{ route('post', ['post' => $post_id]) }}
{{ route('post') }}/@{{ post.id }}

在脚本中,您可以像这样实现方法:

let someUrl = "{{ route('post') }}/" + postObj.id;

在视图中你可以像这样实现方法:

<a href="{{ route('post') }}/@{{ post.id }}">My post @{{ post.id }}</a>

【讨论】:

  • 假设路由参数总是在最后但是很好!这是一种方式
  • 如果你想确保'post_id'末尾是数字/数字,你也可以这样写(路由器级别的正则表达式验证规则) Route::get('post/{post_id }', 'PostController@post')->name('post')->where('post_id','^([0-9]+)$');但是无论如何在最新版本的 laravel 中,系统都会抛出 404 Not found 页面
  • 谢谢,对于我的情况,因为它已经结束了,所以我希望有一个更聪明的方法来做到这一点,因为我们在前面混合使用越来越多的 Vue.js有一些刀片模板,聪明!
猜你喜欢
  • 2018-07-23
  • 2015-03-16
  • 1970-01-01
  • 2016-07-01
  • 2016-04-12
  • 2022-06-30
  • 2020-01-23
  • 2019-08-12
  • 1970-01-01
相关资源
最近更新 更多