我正在使用Laravel 5.4并尝试提交表单并检查输入是否为数字。但是当我进入验证时,它会路由到另一个页面。如果我删除了验证,那么一切正常 这是我的刀片形式: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
当我点击我的pin_verification.blade.php表单上的提交按钮时 我转到我的PinVerificationController.php:
class PinVerificationController extends Controller
{
public function pinValidation(Request $request){
if($request->has('validate')){
$validator = $this->validate($request,[
'pin_number' => 'required|numeric'
]);
return redirect("/test/create");
//return $this->validatePin($request);
}else{//choosing verification method
return $this->choosePinVerficationMethod($request);
}
}
public function init(){
...
}
public function choosePinVerficationMethod(Request $request){
...
}
}
我的代码进入pinValidation函数并进入第一个if语句,但是当它命中时
$validator = $this->validate($request,[
'pin_number' => 'required|numeric'
]);
它将我的init()函数路由到另一个控制器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']);
答案 0 :(得分:3)
因为您实际上并没有检查验证,所以您只是执行该方法,因此它自然只是根据第一个返回重定向指令路由到puts string unless string.include?"running"
。
请改为尝试:
/test/create
答案 1 :(得分:0)
您使用的验证方法会重定向您自己:
$validator = $this->validate($request,[
'pin_number' => 'required|numeric'
]);
你应该使用:
$validator = Validator::make($request,[
'pin_number' => 'required|numeric'
]);
然后检查:
if ($validator->fails()) {
//redirect
};