我想知道处理所有请求uri的最佳位置是什么。例如:
www.abc.com/event1/vote
www.abc.com/event2/vote
现在在上面的示例中,我想基于URL的第二个参数(如event1,event2等)处理不同的业务逻辑,因为此参数是动态参数。我知道我可以在控制器中使用before_filter,但我想在任何控制器执行之前执行我的逻辑。我不想在每个控制器中编写before_filter。
答案 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
文件中声明此事件。