【问题标题】:remove validation on name in laravel 6 on creating new user在创建新用户时删除 laravel 6 中名称的验证
【发布时间】:2020-05-31 02:43:18
【问题描述】:

我想在创建新用户时删除 laravel 6 中名称的验证。用户已成功创建,但是当我输入带有空格或大写字母的名称时,会打开登录页面。但是,如果我从名称中删除所有空格,则以下代码一切正常。

protected function validator(array $data)
{
    return Validator::make($data, [
        'name'     => ['required', 'string', 'max:255'],
        'email'    => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => ['required', 'string', 'min:8', 'confirmed'],
    ]);
}

protected function create(array $data)
{
    $username = slugify($data['name']) . "-" . mt_rand(10000, 99999);

    return User::create([
        'name'     => $data['name'],
        'username' => $username,
        'email'    => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}

blade.php 代码

https://codeshare.io/5e1kX7

【问题讨论】:

  • 当您说“登录页面打开”时发生这种情况,而不是将用户保存到数据库,或者如果您在名称中包含空格,您在登录用户时遇到问题?
  • 只有当我在名称中添加空格时才会发生这种情况
  • 我从您的问题中意识到,当您在名称中添加空格时会发生“某些事情”,但我的评论是询问具体发生了什么。请你能更详细地解释你期望什么应该发生但没有发生,或者什么没有发生应该发生。
  • 我想成功注册,无论我是否放置空间...
  • 那么,当您在名称中添加空格时,不会将用户添加到数据库中?

标签: laravel laravel-5 laravel-authorization


【解决方案1】:

我通过在验证中添加正则表达式来做到这一点

'name' => ['required', 'string','regex:/^[\pL\s\-]+$/u', 'max:255'],

【讨论】:

    【解决方案2】:

    试试

    //...
    'name' => ['required', 'string', 'regex:/^[a-zA-Z0-9\s]+$/', 'max:255'],
    //...
    

    【讨论】:

    • 不,我没有收到任何错误,但我移至登录页面并将值保存到数据库
    • 是的,如果验证失败,您必须收到错误验证消息
    • 但是如果验证失败,为什么将值存储到数据库中...?
    • 我在 create 方法中看不到任何验证调用?!
    • 能否请您添加控制器和刀片文件的完整代码?
    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2020-07-21
    • 1970-01-01
    • 2014-10-01
    • 2019-10-28
    • 1970-01-01
    相关资源
    最近更新 更多