Laravel Middleware在提交表单之前执行操作

时间:2017-10-27 10:45:14

标签: php laravel

我只是创建一个随机应用来检查用户是否有资格投票。我正在使用中间件检查年龄是否小于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');

请帮助我如何在表单提交后才能使中间件工作。

1 个答案:

答案 0 :(得分:1)

在每个请求之前执行中间件。您将中间件分配给整个资源,因此分配给显示表单的路径。

解决方案

仅将中间件分配给控制器中的store方法。从路径文件中删除->middleware('agechecker')方法调用,并在控制器构造函数中添加指定,如下所示:

public function __construct()
{
    $this->middleware('agechecker')
         ->only(['store']);
}