首页 PHP小记正文

laravel框架表单验证

刘伟 PHP小记 2018-03-14 364 1

创建表单验证请求类命令: [kbd] php artisan make:request StoreBlogPost[/kbd](StoreBlogPost为请求类类名) 执行后 会在app/Http/Requests 目录下生成一个请求类  



namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Validator;
use Auth;
use Hash;
class ChangePassword extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     * 如果你需要使用当前的表单请求类,就需要将authorize方法的返回改成true
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * 自定义验证原密码和新密码是否相同的方法
     */
    public function checkPassword(){
        //下面的foo代表的是自定义的方法名,不要和系统的起一样的名字
        //$attribute 要被验证的属性名称
        //属性的值 $value
        //$parameters 传入验证规则的参数数组
        //Validator 实例
        Validator::extend('jiance', function ($attribute, $value, $parameters, $validator) {
            //此时此刻$value代表的就是原密码的值
            //Hash类的check方法会自动验证你传递进去的2个参数的值是否相等,如果相等,返回为true,
如果不相等,返回为false
            //这里就涉及到谁在前,谁自后,比如:我要验证的是a是否和b相同,那么a在前,b在后,所以在这
里,用户填写的是第一个参数,原密码是第二个参数
            return Hash::check($value,Auth::guard('admin')->user()->password);
        });
    }

    /**
     * Get the validation rules that apply to the request.
     * 定义表单请求中的一些规则,比如说某些参数必填等等
     * @return array
     */
    public function rules()
    {
        //返回的数组中填写的就是验证的规则,既然是数组,填写的内容肯定是:键名 => 键值
        //在这里调用一下自定义的验证方法
        $this->checkPassword();
        return [
            //键名是需要验证的表单中的name名
            //键值该字段的需要的验证规则
            'oldPassword' => 'required|jiance',
            'password' => 'required|confirmed',
            'password_confirmation' => 'required',
        ];
    }

    /**
     * 如果你希望将英文转换成中文,只用重写一个messages方法即可,按照下面的格式来,注意,
方法名必须必须必须只能只能只能叫messages,不能改名字
     * @return array
     */
    public function messages()
    {
        return [
//            键名 => 键值
//            键名里面写的是验证的字段.验证规则
//            键值里面写的是你希望转换成的中文提示或者其他你希望的语言提示
            'oldPassword.required' => '原密码不能为空',
            'password.required' => '新密码不能为空',
            'password_confirmation.required' => '确认密码不能为空',
            'password.confirmed' => '两次密码输入不相同',
            'oldPassword.jiance' => '原密码输入错误',
        ];
    }
}

当有错误的时候 会将错误消息返回 在模板中 //框架中提供的显示错误的模板
 @if (count($errors) > 0)
        
    @foreach ($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论

精彩评论
  • 2018-03-23 19:51:13

    :confused: :confused: :confused: :confused: :lol: :mad: