如果日期匹配,我想打印“生日快乐”,否则我想展示一些东西。所以我在“/”路线中使用中间件。
我的路线
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()
而不是“生日快乐”?
提前致谢。
答案 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);
}