我的Laravel学习之路之表单验证 validation

来源:互联网 发布:gmp软件 编辑:程序博客网 时间:2024/05/15 11:20

上一节我们写了表单提交,但是表单内容都为空时,依然可以提交,所以我们要使用表单验证

更多参考手册:https://docs.golaravel.com/docs/5.0/validation/#rule-min

第一种方法:

关于表单验证,第一个是使用php artisan make:request CreateArticleRequest 可以创建一个验证类
此类会自动生成在http目录下面的requests目录下面生成,填写规则完毕,方法参数里引入替换request

同时在表单提交视图里,填写报错输出代码,直接上代码吧

@extends('app')@section('content')<div class="container"><h3>撰写新文章</h3>{!! Form::open(['url'=>'/articles']) !!}<div class="form-roups">{!! Form::label('name') !!}{!! Form::text('name',null,['class'=>'form-control']) !!}</div><div class="form-groups">{!! Form::label('content') !!}{!! Form::textarea('content',null,['class'=>'form-control']) !!}</div><div class="form-groups">{!! Form::label('published_at') !!}{!! Form::input('date','published_at',date('Y-m-d'),['class'=>'form-control']) !!}</div>{!! Form::submit('提交',['class'=>'btn btn-primary form-control']) !!}{!! Form::close() !!}@if($errors->any())<ul class="list-group">@foreach($errors->all() as $error)<li class="list-group-item list-group-item-danger">{{ $error }}</li>@endforeach</ul>@endif</div>@stop
红色部分为输出报错代码

这个是使用artisan生成的规则类,代码已写好

<?phpnamespace App\Http\Requests;use App\Http\Requests\Request;class CreateArticleRequest extends Request{    /**     * Determine if the user is authorized to make this request.     *     * @return bool     */    public function authorize()    {        //此处简单的意思就是A发布的文章不能由B来编辑,不过并没有用户系统,用不到,所以就改为true        return true;    }    /**     * Get the validation rules that apply to the request.     *     * @return array     */    public function rules()    {        //验证规则,要和表单提交的字段名一致 required代表必填 min:3 代表至少三个字符        return [            'name' => 'required|min:3',            'content' => 'required',            'published_at' => 'required',        ];    }}
下面贴出控制器代码第一种

public function store(Requests\CreateArticleRequest $request)    {
//就是将方法里的参数request改为规则类Requests\CreateArticleRequest        Samples::create($request->all());        // 第三部:重定向        return redirect('/articles');    }
下面贴出第二种方法,使用这个你必须先引入 use Validator;红色部分为代码,这个可以自定义错误信息

public function store(request $request)    {        //知识点,如果我们要获得传递过来的其中指定值,可以使用下面两种方法        //$request['name'];      或者      $request->get('name');        //打印所有传递过来的值        // dd($request->all());        //第一步:接受post传递过来的数据               //$input = $request->all();        //提示,如果需要存入当前时间字段,可使用Carbon::now(); 但是顶部要引入 use Carbon\Carbon;        //比如文章发表时间可添加   $input['published_at'] = Carbon::now();        // 第二部:存入数据库        // laravel会帮我们自动过滤掉token                //关于表单验证,第一个是使用php artisan make:request CreateArticleRequest 可以创建一个验证类        //此类会自动生成在http目录下面的requests目录下面生成,填写规则完毕,方法参数里引入替换request                // 第二种方法是使用validate         //比如可以写成        //$this->validate($request,['name' => 'required|min:3','content' => 'required','published_at' => 'required']);        // 也可以写成这样        $input = $request->all();            $rule = [              'name' => 'required|min:4',              'content' => 'required',              'published_at' => 'required',          ];                $message = [              'required' => ':attribute 不允许为空.',             'min' => ':attribute不能少于:min位.',         ];                      $validate = Validator::make($input, $rule, $message);                if (!$validate->passes()) {              return back()->withErrors($validate);                }          Samples::create($request->all());        // 第三部:重定向        return redirect('/articles');    }


原创粉丝点击