我只是创建一个随机应用来检查用户是否有资格投票。我正在使用中间件检查年龄是否小于18然后重定向到/ age / validate。但问题是中间件在表单提交之前正在执行操作。请帮忙。
表格::
{!! Form::open(['action'=>'AgeController@store', 'method'=>'POST']) !!}
{!! Form::number('age', null) !!}
{!! Form::submit('Check') !!}
{!! Form::close() !!}
中间件::
public function handle($request, Closure $next)
{
if($request->age <= 18){
return redirect()->route('noteligble');
}
return $next($request);
}
路线:
Route::get('/age/validate', function(){
echo 'You are not eligible to vote';
})->name('noteligble');
Route::resource('checkage', 'AgeController')->middleware('agechecker');
请帮助我如何在表单提交后才能使中间件工作。
答案 0 :(得分:1)
在每个请求之前执行中间件。您将中间件分配给整个资源,因此分配给显示表单的路径。
仅将中间件分配给控制器中的store方法。从路径文件中删除->middleware('agechecker')
方法调用,并在控制器构造函数中添加指定,如下所示:
public function __construct()
{
$this->middleware('agechecker')
->only(['store']);
}