使用Laravel 4在路由组上添加更多过滤器选项

时间:2013-01-27 07:30:58

标签: php rest routes laravel laravel-4

我正在使用postmarkapp的入站服务在Web挂钩上接收JSON格式的电子邮件。 在我的情况下,我有一个EmailController接受HTTP POST来存储邮件。

设置如下:

Route::group(array('before' => 'auth'), function()
{
    Route::resource('emails', 'EmailController');
});

我需要路由组不过滤与控制器上的商店操作相关的POST。 我尝试过使用:

array('before' => 'auth', 'except' => 'post')
array('before' => 'auth', 'except' => 'store')

所以我真的不知道该怎么做。过滤器本身可能吗? 另外,在执行异常时我是否使用操作名称或HTTP谓词?

作为额外的: 我也不完全习惯于向这样的每个人开放路线动作。关于如何确保只有postmarkapp发布在那里的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:0)

创建自己的过滤器并为其添加适当的逻辑。例如:

Route::get('test', ['before' => 'foo']);

Route::filter('foo', function($route, $request) {

    if ($request->getClientIp() === 'xxx.xxx.xxx.xxx')
    {
            //...
    }

    if ($request->getMethod() === 'POST'))
    {
            //...
    }

});

```

您还可以为更复杂的过滤器创建过滤器类。阅读http://four.laravel.com/docs/routing#route-filters中的部分。