Php Laravel 5:如何使用简单的出生日期中间件(在筛选之前)?

Php Laravel 5:如何使用简单的出生日期中间件(在筛选之前)?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我想打印“生日快乐”,如果日期是匹配的,否则我想显示一些东西。因此,我在“/”路径中使用中间件 我的路线 Route::get('/', ['middleware' => 'dob', function(){ return 'Hello World'; }]); 我的内核 protected $routeMiddleware = [ 'auth' => 'App\Http\Middleware\Authenticate', 'auth.bas

我想打印“生日快乐”,如果日期是匹配的,否则我想显示一些东西。因此,我在“/”路径中使用中间件

我的路线

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,并访问公共应用程序,但为什么它是show
调用undefined方法illighted\Http\Request::date()
而不是“生日快乐”


提前感谢。

例外情况是,问题在于您对请求对象的date()方法的调用。默认请求类未实现此方法-是否使用此方法扩展请求类?或者您想访问任何输入数据或模型中的数据,还是仅仅指php date()函数?
如果您告诉我们这个方法调用应该做什么,那么我们可以提供更好的帮助

正如其他人指出的,请求对象上没有
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);
}

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

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

如果日期已传递到路由,请使用
print\r($request)
。@aldrin27我应该将
print\r($request)
放在哪里?也许你能帮我回答。谢谢。在你的if语句上面然后退出您希望输出什么
$request->date()
?您是在尝试检索名为date的输入,还是仅尝试获取当前日期?如果是这样,您不需要请求对象来检索它,您可以使用
date('d/m')