本文实例讲述了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