为什么我在Laravel表单上的验证失败并发送到其他页面?
我正在使用Laravel5.4,试图提交一个表单,并检查输入是否是数字。但是,当我进入验证时,它会转到另一个页面。如果我删除验证,则一切正常。为什么我在Laravel表单上的验证失败并发送到其他页面?,laravel,validation,blade,Laravel,Validation,Blade,我正在使用Laravel5.4,试图提交一个表单,并检查输入是否是数字。但是,当我进入验证时,它会转到另一个页面。如果我删除验证,则一切正常。 这是我的刀片表单:pin_verification.blade.php @extends('layouts.master') @section('title','Verify Order') @section('extra_head_info') <meta name="csrf-token" content="{{ csrf_token() }}
这是我的刀片表单:pin_verification.blade.php
@extends('layouts.master')
@section('title','Verify Order')
@section('extra_head_info')
<meta name="csrf-token" content="{{ csrf_token() }}">
@endsection
@section('content')
@if(count($errors) > 0)
<ul>
@foreach($errors->all() as $error)
<li class="alert alert-danger">{{$error}}</li>
@endforeach
</ul>
@endif
{{ Form::open(['action' => 'PinVerificationController@pinValidation','id'=>'pin_verification_form']) }}
We sent a text message to {{$clean_number}}. You should receive it within a few seconds.<br><br>
{{ Form::label('Pin Code', null, ['class' => 'control-label']) }}
{{ Form::text('pin_number', null,['placeholder' => 'Pin Code'])}}<br><br>
Enter a 4 digit pin you received by phone.
<br>
<br>
{{ Form::submit('Verify',['name'=>'validate'])}}
{{ Form::close() }}
@endsection
我的代码进入pinValidation函数和第一个if语句,但当它到达
$validator=$this->validate($request)[
“pin_编号”=>“必需”|数字”
]);代码>
它将myinit()函数路由到另一个控制器CheckoutController.php
如果我删除了我的验证,那么我的代码工作正常,我会被重定向到redirect(“/test/create”)代码>
为什么会这样?
我的路线是:
Route::get('/order/verify/{encrypted_key}', ['as'=>'pinverification','uses'=>'PinVerificationController@init']);
Route::get('/test/create', ['as'=>'orders_create', 'uses'=>'OrdersController@init']);
Route::post('/order/verify', ['as'=>'pinverification1', 'uses'=>'PinVerificationController@pinValidation']);
Route::get('/order/checkout/{product_id}', ['as'=>'checkout', 'uses'=>'CheckoutController@init']);
这是因为您实际上并没有检查验证,您只是在执行该方法,因此它自然会按照第一条返回重定向指令路由到/test/create
请尝试以下方法:
public function pinValidation(Request $request){
if($request->has('validate')){
$validator = Validator::make($request->all(), [
'pin_number' => 'required|numeric'
]);
if ($validator->fails()) {
return redirect('test/create')
->withErrors($validator)
->withInput();
} else {
// Success criteria, validation passed.
}
} else {
$this->choosePinVerficationMethod($request);
}
}
您在此处使用的验证方法会重定向您自己:
$validator = $this->validate($request,[
'pin_number' => 'required|numeric'
]);
你应该使用:
$validator = Validator::make($request,[
'pin_number' => 'required|numeric'
]);
然后检查:
if ($validator->fails()) {
//redirect
};
if ($validator->fails()) {
//redirect
};