如果日期匹配,我想打印"Happy Birthday",否则我想显示一些东西。所以我在我的"/"路由中使用中间件。
我的路线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()
而不是"生日快乐"?
正如异常所说,问题是您对请求对象上的date()方法的调用。默认的请求类没有实现这个方法——你用这个方法扩展请求类了吗?或者您想要访问任何输入数据或来自A模型的数据,或者仅仅意味着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);
}