laravel句柄请求uri在一个地方

时间:2014-06-09 11:41:53

标签: laravel request handler

我想知道处理所有请求uri的最佳位置是什么。例如:

www.abc.com/event1/vote
www.abc.com/event2/vote

现在在上面的示例中,我想基于URL的第二个参数(如event1,event2等)处理不同的业务逻辑,因为此参数是动态参数。我知道我可以在控制器中使用before_filter,但我想在任何控制器执行之前执行我的逻辑。我不想在每个控制器中编写before_filter。

1 个答案:

答案 0 :(得分:1)

您可以使用全局before事件,该事件将在处理任何/每个路由之前触发每个请求:

App::before(function($request) {
    // dd($request->all()); // All inputs
    // dd($request->input()); // All inputs
    // dd($request->segments());  // All segments as an array
    // dd($request->segment(1)); // event1
    // dd($request->url()); // www.abc.com/event2/vote
});

尝试这种方法并一次检查每条注释行,您就会明白这一点。详细了解Laravel网站上的Application Events

在此event中,您可以Request访问$request对象,并可以通过多种方式提取URI的部分内容,具体取决于URI你可以做出决定。例如,要获取细分1,您可以执行以下操作:

// www.abc.com/event2/vote
$event = $request->segment(1); // event2
if($event == 'event2') { ... }

您可以在filters.php文件中声明此事件。