我是Laravel的新手,我正在尝试设置一些基本的路由逻辑。我有一个处理某个URL模式的路由。这些URL通常是一个ajax请求(返回弹出窗口的数据)。但是,搜索引擎和禁用javascript的用户将使用普通链接,因此我希望在单独的页面上返回数据。为此,我需要确定请求是否为ajax。我知道我可以使用以下命令来完成此操作:
if(Request::ajax()){
//
}我的计划是将其作为附加到路由的“之前”过滤器的一部分。如果我的想法是正确的,我需要从过滤器返回一个boolean ajax=true/false。也许这是一个非常简单的问题,但我找不到任何解释如何从过滤器返回这样的值的地方?我所能找到的一切似乎都假定任何过滤器逻辑的默认结果都必须是重定向。
谢谢
编辑:我得出的结论是,我根本没有按照预期的方式使用过滤方法,而只是将处理程序放在我的控制器方法中。但我仍然想知道是否有可能从过滤器返回数据。
发布于 2013-12-22 03:13:52
在控制器中:
if(Request::ajax()){
return Response::json(['message' => 'Hi. Your request was ajax!', 'status' => 1]);
}发布于 2014-02-11 02:07:30
我为此找到的简单解决方案是使用Session::flash,它只为下一个请求填充数据,您可以很容易地在任何地方获得结果。举个例子:
函数路由::filter(‘
’,function() {
if(false) {
View:make('error);//或者在你想要的时候
}否则{
返回会话:flash(‘result_var’,$my_result_var);
}
});
https://stackoverflow.com/questions/20722293
复制相似问题