在包内设置过滤器

时间:2014-08-19 15:24:01

标签: laravel laravel-4

我正在开发一个包,注册一些用户可以根据需要添加到路由中的过滤器。

例如

\Route::filter('myPackage.hasSomething', 'Panthro\MyPackage\MyPackage@hasSomethingFilter');

我只关心我应该把它们放在我的包裹里。

当他们在我的服务提供商类中注册时。这对他们来说是个好地方吗?有这些应该去的常见做法吗?

我已经阅读了一些将自定义过滤器放在过滤器文件夹中的博客,唯一的问题是这是针对实际的过滤方法,而不是针对使用路由器注册过滤器的代码。

1 个答案:

答案 0 :(得分:-1)

您不应将该代码放入包中,因为最终用户应该能够为您的过滤器指定自定义名称。认为可能已经有另一个名称冲突的现有过滤器。

正常创建您的软件包,唯一的特殊情况是您必须确保类MyPackage具有方法filter。然后,最终用户可以使用以下命令安装软件包:

composer require "panthro/mypackage:dev-master"

然后编辑app/config/app.php并在providers数组中添加服务提供商:

'providers' => array(
    'Panthro\MyPackage\ServiceProvider',

最后将过滤器添加到app/filters.php文件的底部:

Route::filter('hasSomething', 'Panthro\MyPackage\MyPackage');

欲了解更多信息,请阅读官方文档Registering A Class Based Filter