Laravel 5:如何使用简单的出生日期中间件(过滤前)?

时间:2015-09-13 20:23:37

标签: php laravel laravel-5

如果日期匹配,我想打印“生日快乐”,否则我想展示一些东西。所以我在“/”路线中使用中间件。

我的路线

Route::get('/', ['middleware' => 'dob', function(){
    return 'Hello World';
}]);

我的内核

protected $routeMiddleware = [
        'auth' => 'App\Http\Middleware\Authenticate',
        'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
        'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
        'dob' => 'App\Http\Middleware\DateOfBirth'
    ];

我的中间件/ DateOfBirth.php

public function handle($request, Closure $next)
    {
        if($request->date('d/m') == '15/09' ){
            echo 'happy birthday';
        }
        return $next($request);
    }

我只是将当前日期更改为15并访问公共应用,但为什么显示Call to undefined method Illuminate\Http\Request::date()而不是“生日快乐”?

提前致谢。

3 个答案:

答案 0 :(得分:0)

正如异常所说,问题是您对请求对象调用date()方法。默认的Request Class没有实现此方法 - 您是否使用此方法扩展了请求类?或者您想从A模型访问任何输入数据或数据或仅仅意味着php date()函数? 如果你告诉美国这个方法应该做什么,那么我们可以帮助更好!?

答案 1 :(得分:0)

正如其他人所指出的,请求对象上没有date()方法。我认为你需要更像的东西:

public function handle($request, Closure $next)
{
    $date = $request->get('date');

    if((new \DateTime($date))->format('d/m') == '15/09' ){
        echo 'happy birthday';
    }
    return $next($request);
}

答案 2 :(得分:-1)

与Laravel 4中的过滤器略有不同

public function handle($request, Closure $next)
{
    if(date('d/m') == '15/09' ){
        echo 'happy birthday';
    }
    return $next($request);
}