本文实例讲述了Laravel框架表单验证操作。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
public function create(Request $request ){ if ( $request ->isMethod( 'POST' )){ //验证通过后继续进行 //方法1 控制器验证 $this ->validate( $request ,[ 'Student.name' => 'required|min:2|max:20' , 'Student.age' => 'required|integer' , 'Student.sex' => 'required|integer' , ],[ 'required' => ':attribute 为必填项' , 'min' => ':attribute 长度不符合要求' , 'integer' => ':attribute 必须是一个整形' , ],[ 'Student.name' => '姓名' , 'Student.age' => '年龄' , 'Student.sex' => '性别' , ]); //方法2 Validator类验证 $validator = \Validator::make( $request ->input(),[ 'Student.name' => 'required|min:2|max:20' , 'Student.age' => 'required|integer' , 'Student.sex' => 'required|integer' , ],[ 'required' => ':attribute 为必填项' , 'min' => ':attribute 长度不符合要求' , 'integer' => ':attribute 必须是一个整形' , ],[ 'Student.name' => '姓名' , 'Student.age' => '年龄' , 'Student.sex' => '性别' , ]); if ( $validator ->fails()){ return redirect()->back()->withErrors( $validator )->withInput(); } //如果验证通过,则继续执行下面的代码 $data = $request ->input( 'Student' ); if (Student::create( $data )){ return redirect( 'student/index' )->with( 'success' , '添加成功' ); } else { return redirect()->back(); } } return view( 'student.create' ); } |
注意Laravel的create方法,需要在model中
设置允许批量赋值:
1
|
protected $fillable = [ 'name' , 'age' ]; |
web中间件有个作用是防止xss攻击,即csrf,需要在页面的表单中增加{{ csrf_field() }},
会生成一个隐藏的input表单,带个token字段。
错误信息的显示:
控制器中的with方法,可以把信息放入session中
1
|
return redirect( 'Student/index' )->with( 'success' , '添加成功' ); |
页面中的显示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@ if (Session::has( 'success' )) <div> {{ Session::get( 'success' ) }} </div> @ endif @ if ( count ( $errors )) <div class = "alert alert-danger" > <ul> @ foreach ( $errors ->all() as $val ) <li>{{ $val }}</li> @ endforeach </ul> </div> @ endif |
{{$errors->first()}}
可以显示第一条错误信息
数据保持:
1
|
return redirect()->back()->withErrors( $validator )->withInput(); |
这段代码中的withInput可以把表单提交的信息带回去,
页面中使用old方法:
1
2
3
4
5
|
姓名 :<input type= "text" name= "Student[name]" value= "{{ old('Student')['name'] }}" /> 性别 : @ foreach ( $student ->user_sex() as $ind => $val ) <input type= "radio" name= "Student[sex]" value= "{{$ind}}" {{ old( 'Student' )[ 'sex' ]== $ind ? 'checked' : '' }} />{{ $val }} @ endforeach |
希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。
原文链接:https://www.cnblogs.com/gyfluck/p/9042005.html