Laravel过滤器未执行

时间:2014-10-17 11:44:56

标签: php laravel filter routing

我有一个非常奇怪的问题。

在我的本地计算机(Windows 8,XAMPP)上,Laravel过滤器可以正常工作,但在服务器上却没有。 (Ubuntu和Apache)。

Route::filter('test_filter', function($request) {
    echo 'Inside filter<br />';
});

Route::get('test_server2', array('before' => 'test_filter', function() {
    return 'After filter<br />';
}));

当我从本地服务器运行时,输出为:

  

内部过滤器
  过滤后

当我从网上运行相同的脚本时,我得到:

  

过滤后

如您所见,过滤器未应用。它们永远不会被执行。它不是一个随机或临时的东西。

我在一个大型应用程序中注意到了这个问题。我创建了这个简单的代码来检查基本的东西是否有效,但它没有。

有谁知道为什么过滤器可能无法执行?

我已经检查了Laravel源代码中的路由类,但我找不到任何可能有助于解决我的问题的内容。

3 个答案:

答案 0 :(得分:0)

首先:始终定义您正在使用的Laravel的特定版本,以及执行所有内容的位置。

某些代码仅在生产时执行。如果您在app/start/artisan.phpapp/start/local.php中定义了过滤器,则在环境设置为production的服务器上执行应用程序时,它不会反映出来。如果您没有明确指定代码行的定义位置,我们将无法提供帮助。

最后但并非最不重要:尝试减少开发环境与生产环境之间的差异。我建议使用Vagrant,甚至可能使用Laravel Homestead。这样,您就可以在Windows上开发Laravel应用程序并在虚拟Ubuntu环境中运行。

希望这有帮助。

答案 1 :(得分:0)

用户Matt Burrow是对的。当环境被称为“测试”时,不会执行过滤器。我不得不把它改成不同的东西,以使它们工作。

答案 2 :(得分:0)

当您的应用程序处于测试阶段时模式,禁用路由过滤器。因为测试是为单元测试保留的。

我在issue

上找到了它