您知道为什么以下代码中的代码"<a href="{{route('posts.show', ['id' => 'post.id', 'slug' => post.slug])}}" class="btn btn-primary text-white">More</a>"
显示使用未定义的常量帖子 - 假设&#39;帖子&#39;?
$.each(result, function(index, post) {
newPosts += '<div class="col-12 col-sm-6 col-lg-4 col-xl-3 mb-4">\n' +
' <div class="card box-shaddow">\n' +
+' <div class="card-body">\n' +
+' <h5 class="card-title h6 font-weight-bold text-heading-blue">'+post.name+'</h5>\n' +
+' </div>\n' +
' <div class="card-footer d-flex justify-content-between align-items-center">\n' +
' <a href="{{route('posts.show', ['id' => 'post.id', 'slug' => post.slug])}}" class="btn btn-primary text-white">More</a>
' <span class="font-weight-bold font-size-sm text-heading-blue"> </span>\n' +
' </div>\n' +
' </div>\n' +
' </div>';
});
答案 0 :(得分:1)
在调用Blade的post
函数时,不能将Javascript route()
对象用作变量。 Blade会在将模板发送到浏览器之前在服务器上呈现模板,而您的Javascript代码会在很晚之后由访问者在其计算机上执行。
一个选项是让Blade填充一个可以在Javascript中使用的变量,使用虚拟值:
var placeholder = "{{route('posts.show', ['id' => 123, 'slug' => 'demo-slug'])}}";
$.each(result, function(index, post) {
var url = placeholder.replace(123, post.id).replace('demo-slug', post.slug);
newPosts += '[...]'
+ '<a href="' + url + '" class="btn btn-primary text-white">More</a>'
+ '[...]';
});
您用作占位符的值取决于您的路线的样子以及使用的验证(如果有)。只需确保使用不属于URI的占位符文本。