laravel

laravel之验证

2018-05-23  本文已影响1人  空气KQ

控制器验证

$this->validate(验证参数,[验证规则],自定义错误消息提示);

$this->validate($request, [
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

首次验证失败后中止后续规则验证,属性中分配bail规则

$this->validate($request, [
    'title' => 'bail|required|unique:posts|max:255',
    'body' => 'required',]
);

如果title属性上的required规则验证失败,则不会检查unique规则,规则会按照分配顺序依次进行验证。

表单请求验证

生成一个request验证表单

php artisan make:request PostRequest

在rules里面设置

  public function rules()
    {
        return [
         'title' => 'bail|required|unique:posts|max:255',
          'body' => 'required',]
        ];
    }
  这个表示是否认证权限,一般设置return true,否则会提示没有权限。除非你页面需要设置权限控制操作
  public function authorize()
    {
        return true;
    }

自定义错误消息

public function messages(){
    return [
        'title.required' => 'A title is required',
        'body.required'  => 'A message is required',
    ];
}

控制器调用

//引入命名
use App\Http\Requests\PostRequest;
public function store(PostRequest $request)
    {
        print_r($request->all());
    }

手动验证

Validator::make(参数,规则,消息);

//引入
use Validator;
 public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);
       //验证失败操作判断
        if ($validator->fails()) {
            return redirect('post/create')
                        ->withErrors($validator)
                        ->withInput();
        }

        // 存储博客文章...
    }

自动重定向

Validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
])->validate();

处理错误信息

默认在每个验证blade里面都会有$errors这个变量,直接调取

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

获取第一条错误信息,使用first方法
视图下

{{ $errors->first('email') }}

控制器下获得

$errors = $validator->errors();
echo $errors ->first('email');

获取指定字段的所有错误信息,使用get('字段')

foreach ($messages->get('email') as $message) {
    //
}

数组元素错误信息,使用*或者是指定数组索引

foreach ($errors->get('attachments.*') as $message) {
    //
}

获取所有字段的所有错误信息,all方法

foreach ($messages->all() as $message) {
    //
}

否存在某字段的错误信息

if ($messages->has('email')) {
    //
}

获取指定格式的错误信息

echo $messages->first('email', '<p>:message</p>');
foreach ($messages->all('<li>:message</li>') as $message) {
    //
}

在语言文件中指定自定义消息

resources/lang/xx/validation.php.语言文件的custom数组

'custom' => [
    'email' => [
        'required' => 'We need to know your e-mail address!',
    ],
],

验证规则请看下一篇
https://www.jianshu.com/p/9e7aa6fe81ab

上一篇下一篇

猜你喜欢

热点阅读