php教程

超轻量级php框架startmvc

Laravel框架表单验证操作实例分析

更新时间:2020-04-09 05:48:22 作者:startmvc
本文实例讲述了Laravel框架表单验证操作。分享给大家供大家参考,具体如下:publicfunctioncre

本文实例讲述了Laravel框架表单验证操作。分享给大家供大家参考,具体如下:


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中

设置允许批量赋值:


protected $fillable = ['name','age'];

web中间件有个作用是防止xss攻击,即csrf,需要在页面的表单中增加{{ csrf_field() }}, 会生成一个隐藏的input表单,带个token字段。

错误信息的显示:

控制器中的with方法,可以把信息放入session中


return redirect('Student/index')->with('success','添加成功');

页面中的显示:


@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()}}可以显示第一条错误信息

数据保持:


return redirect()->back()->withErrors($validator)->withInput();

这段代码中的withInput可以把表单提交的信息带回去,

页面中使用old方法:


姓名 :<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 表单验证