zoukankan      html  css  js  c++  java
  • 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
     


     
     
     
     
  • 相关阅读:
    redis.conf 配置信息:读取及修改命令
    Redis 持久化
    webpack 中,module、chunk、bundle 的区别(待补充)
    对象属性的描述:writable、enumerable、configurable
    webpack 中,importloaders 配置项的含义
    vue cli 3 中,Lint on save 与 Lint and fix on commit 区别(待补充)
    使用 vue-cli-service inspect 来查看一个 Vue CLI 3 项目的 webpack 配置信息(包括:development、production)
    Eslint 能自动格式化代码,为什么还要用 Prettier?
    prettier-eslint 与 prettier-eslint-cli 区别
    032_nginx配置文件安全下载
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9042005.html
Copyright © 2011-2022 走看看