Laravel异常我无法摆脱:调用未定义的方法Illuminate \ Routing \ Route :: filter()

时间:2014-08-08 10:52:25

标签: php laravel laravel-4

我跟随" Code Bright"书中的例子(Laravel 4),还试着对我自己进行一些修改。

当我开始尝试类过滤器时,我开始遇到此异常:使用我拥有的任何过滤器调用未定义的方法Illuminate \ Routing \ Route :: filter()在app / filters.php中(即使使用默认提供的过滤器,例如" auth")。文件中没有注释掉的第一个引发异常。

尽管我还没有自动加载自定义过滤器类文件夹,名为app / filters,但我无法摆脱它。当然我使用过" composer dump-autoload"我每次都改变了composer.json。

什么必须触发此异常?我没有从调试回溯中获得太多信息。

Screen capture

1 个答案:

答案 0 :(得分:0)

我终于修好了。

重置为应用程序的初始状态,并再次创建过滤器。我已经按照相同的步骤操作了,我确信在触发错误时一切都是一样的。但现在没有错。我不知道什么是干扰和提高错误。我之前所拥有的只是简单的路线和其他简单的过滤器。

过滤类:

// app/filters/filtermyclassfilter.php
class FilterMyClassFilter
{
    public function filter($route, $request)
    {
        if (date('m') >= 7 && date('m') <= 9) {
            return 'the filter has been triggered'; 
        }
    }
}

composer.json(注意&#34;应用程序/过滤器&#34;行&#34;自动加载&#34;)

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.2.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/filters",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

过滤别名:

// app/filters.php
Route::filter('classfilter', 'FilterMyClassFilter');

分配给过滤器的路线:

// app/routes.php
Route::get('/pathtoclassfilter', array(
    'before'    => 'classfilter', 
    function() {
        return 'Filter not triggered!!';
    }
));