当用户点击图标时,会调用对控制器的ajax调用,并且控制器会返回一些注释。
我的控制器
public function read($id)
{
$comments = Comment::where('post_id', $id)->get();
return response()->json([
'html' => view('includes.comments')->render(),
'comments' => $comments
]);
}
Ajax成功函数
var comments_box = comments_container.find('.comments-box');
comments_box.html(data.html);
console.log(data);
在控制台日志中,有一个带有注释和渲染html视图的对象数组。但是我不能遍历那个数组。如果我在comments.blade.php中放入一些垃圾代码就会显示出来。但是,如果我尝试
@foreach($comments as $comment) some code @endforeach
它根本无法工作,错误消息是未定义变量:评论
答案 0 :(得分:1)
您需要将变量传递给视图(如果要在刀片文件中使用该变量)
例如说
return view('includes.comments', ['comments' => $comments]);
这样,$ comments变量将在刀片文件中可用,然后您可以使用@foreach
有关观看documentation
的更多信息答案 1 :(得分:1)
我相信而不是:
return response()->json([
'html' => view('includes.comments')->render(),
'comments' => $comments
]);
你应该使用:
return response()->json([
'html' => view('includes.comments', ['comments' => $comments])->render(),
'comments' => $comments // this line might be not necessary
]);
这是因为你想要渲染刀片,你需要将$comments
传递到视图中。所以取决于你真正希望作为json线返回的内容:
'comments' => $comments // this line might be not necessary
如果您想将其用于视图,则可能完全没有必要。