Javascript 如何在使用Laravel验证器之前清除jasny输入掩码?

Javascript 如何在使用Laravel验证器之前清除jasny输入掩码?,javascript,laravel-5,jasny-bootstrap,Javascript,Laravel 5,Jasny Bootstrap,我有一个表单字段来获取移动用户数: <input class="form-control" name="mobile" data-mask="0999 999 9999" type="text" id="mobile" /> 及 它工作得很好,但当我想使用Laravel验证来表明它是唯一的字段时,它就不起作用了。 代码的和平就像: class UserController extends Controller { protected $rules = ['mobile'

我有一个表单字段来获取移动用户数:

<input class="form-control" name="mobile" data-mask="0999 999 9999" type="text" id="mobile" />

它工作得很好,但当我想使用Laravel验证来表明它是唯一的字段时,它就不起作用了。 代码的和平就像:

class UserController extends Controller {

    protected $rules = ['mobile' => 'required|unique:users'];
    public function store(Request $request){
        $validator = Validator::make($request->all(), $this->rules);
        if ($validator->fails()){
            return response()->json([
                'success' => false,
                'errors' => $validator->getMessageBag()->toArray()
            ]);
        }
        // codes to store user...
    }
}
它会导致错误:
SQLSTATE[23000]:完整性约束冲突:1062重复条目

我发现一种方法并不完美,但很好。 我将此函数添加到我的UserController类:

private function sanitize(Request $request){
    $input = $request->all();
    $input['mobile'] = substr(str_replace(" ","",$input['mobile']),1);
    $request->replace($input);
    return $request->all();
}
并像这样使用Laravel验证器:

$validator = Validator::make($this->sanitize($request), $this->rules);

我找到了一种不完美但很好的方法。 我将此函数添加到我的UserController类:

private function sanitize(Request $request){
    $input = $request->all();
    $input['mobile'] = substr(str_replace(" ","",$input['mobile']),1);
    $request->replace($input);
    return $request->all();
}
并像这样使用Laravel验证器:

$validator = Validator::make($this->sanitize($request), $this->rules);

我也面临同样的问题,所以我已经解决了,以下是我的代码:

$mobile = str_replace(['(', ')', ' ', '-'], ['', '', '', ''], $request->post('mobile'));
$request->merge(array('mobile' => $mobile));

    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'max:50', 'min:8'],
        'phone' => ['required', 'unique:users']
    ]);

我也面临同样的问题,所以我已经解决了,以下是我的代码:

$mobile = str_replace(['(', ')', ' ', '-'], ['', '', '', ''], $request->post('mobile'));
$request->merge(array('mobile' => $mobile));

    $request->validate([
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'max:50', 'min:8'],
        'phone' => ['required', 'unique:users']
    ]);

我认为您正在尝试保存数据库中已经存在的手机号码?是的,我想阻止用户这样做,因此我应该在保存到数据库之前验证手机号码,如果手机号码已经存在,则显示盈利消息!我认为您正在尝试保存数据库中已经存在的手机号码?是的,我想阻止用户这样做,因此我应该在保存到数据库之前验证手机号码,如果手机号码已经存在,则显示盈利消息!