我在Laravel中使用以下索引函数设置了资源控制器:
public function index()
{
if (!Auth::check()) {
return redirect()->route('login');
}
$decks = Auth::user()->decks->sortByDesc('name');
return view('decks.index')->with('decks', $decks);
}
在另一个页面上,我还需要通过AJAX调用来
$decks
变量。现在,我已经建立了一条通往我的控制器的附加路由,通过GET请求,我可以从中检索甲板:public function getDecks()
{
if (!Auth::check()) {
return;
}
$decks = Auth::user()->decks->sortByDesc('name');
return response()->json($decks);
}
我的问题:是否可以通过直接向
$decks
的请求获取index
变量,或者我的解决方案是可行的?如果我请求获取索引索引,则会获取decks.index视图的HTML,但是如何访问(如果可能)
$decks
变量?我想我不太了解的是:
$decks
语句中的->with('decks', $decks)
会发生什么?我知道我可以在该页面上使用刀片语法访问$decks
,但是它从哪里访问数据,我也可以通过AJAX访问它吗? 最佳答案
您不能直接从索引路由中检索$decks
。当您调用view(..)->with(...)
时,它将在内部传递给刀片模板处理器,该处理器也接收$decks
变量,然后在服务器端构建HTML,然后将“已编译的” HTM1返回到浏览器。因此,一旦服务器返回结果,就不再存在$decks
变量。由于这种行为,不可能做您想要的。
所以是的,您的解决方案是可行的方法,尽管您可能会考虑将Auth::check()
包裹在middleware
中,并将对$decks
的调用移到一个单独的函数中以简化代码。
我希望这能回答您的问题,如果有任何不清楚的地方,请随时提出!