如何使用Laravel验证在Bootstrap验证器中创建Ajax请求?

时间:2014-11-26 01:43:49

标签: php validation laravel jqbootstrapvalidation

我正在使用bootstrap验证器创建一个表单。我正在使用bootstrap验证器(客户端)和laravel验证(服务器)执行验证。我的问题是我想对laravel执行ajax请求以检查用户名的可用性。

在laravel中我们有这种类型的验证:

'username'              =>  'required|min:6|max:15|unique:users',

检查用户名的可用性。现在我想在bootstrap验证器中包含这种类型的检查。

username: {
    validators: {
        notEmpty: {
            message: 'The username is required and cannot be empty'
        },
        stringLength: {
            min: 6,
            max: 15,
            message: 'The username must be more than 6 and less than 15 characters long'
        },
        regexp: {
            regexp: /^[a-zA-Z0-9_\.]+$/,
            message: 'The username can only consist of alphabetica, number, dot and underscore'
        },
        remote: {
            url: '' /*** how can I perform laravel validation with this?
            message: 'The username is not available'
        }
    }
},

我该怎么做?我是否需要为此类检查创建自定义帮助程序?或者我可以将laravel的验证与此相结合吗?

1 个答案:

答案 0 :(得分:0)

好的,我设法通过在我的控制器中创建另一个功能来解决它​​。 这是我做的:

remote: {
    url: "{{ URL::to('/checkUsername') }}",
    data: function(validator) {
        return {
            username: validator.getFieldElements('username').val()
        }
    },
    message: 'The username is not available'
}

在我的控制器中我有这个:

public function checkUsernameAvailability() {

    $user = DB::table('authors')->where('username', Input::get('username'))->count();

    if($user > 0) {
        $isAvailable = FALSE;
    } else {
        $isAvailable = TRUE;
    }

    echo json_encode(
            array(
                'valid' => $isAvailable
            ));

}

然后就是这样。 :)