我是Laravel的新手,我正在尝试设置一些基本的路由逻辑。我有一个处理某个URL模式的路由。这些URL通常是一个ajax请求(返回弹出窗口的数据)。但是,禁用javascript的搜索引擎和用户将遵循正常链接,因此我希望在单独的页面上返回数据。为此,我需要确定请求是否是ajax。我知道我可以这样做:
if(Request::ajax()){
//
}
我的计划是将此作为附加到路线的“之前”过滤器的一部分。如果我的想法是正确的,我需要从过滤器返回一个布尔ajax = true / false。也许这是一个非常简单的问题,但我无法找到解释你如何从过滤器中实际返回这样的值的地方?我能找到的一切似乎都假设任何过滤逻辑的默认结果都必须是重定向。
由于
编辑:我得出的结论是,我根本没有按照预期的方式使用过滤方法,而只是将处理程序放在我的控制器方法中。但我仍然想知道是否可以从过滤器返回数据。
答案 0 :(得分:-1)
在控制器中:
if(Request::ajax()){
return Response::json(['message' => 'Hi. Your request was ajax!', 'status' => 1]);
}
答案 1 :(得分:-1)
我找到的简单解决方案是使用Session::flash
仅为下一个请求填充数据,您可以轻松地在任何地方获取结果。例如:
Route :: filter(' something',function(){
if(false){
查看:使('错误); //或者你想要什么时候
}其他{
返回会话:flash(' result_var',$ my_result_var);
}
});