如何在Laravel 5.8中实现自定义用户注册表单

9 浏览
0 Comments

如何在Laravel 5.8中实现自定义用户注册表单

我想在我的Laravel应用程序中使用提供的内置功能注册新用户,但还想添加两个额外的字段:名字和姓氏。我在应用程序的管理员区域进行注册,因此我有一个自定义表单,将数据发送到注册路由。当用户表为空时,我可以向数据库添加新用户。当我使用dd命令时,我也可以看到客户端发送的数据。但是当我尝试向数据库添加第二个用户时,什么都没有发生。没有显示任何错误。这次我尝试使用dd命令,但应用程序没有返回任何内容。

强调一下,我不想创建另一个控制器来处理这个问题,而是要扩展已经提供的RegisterController。

我需要帮助找出我做错了什么。

// 在User模型中

 protected $fillable = [
        'firstname', 'lastname', 'email', 'password',
    ];

// 从客户端获取数据在RegisterController.php中

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

// 在RegisterController.php中保存新用户

 protected function create(array $data)
    {
        dd($data);
        return User::create([
            'firstname' => $data['firstname'],
            'lastname' => $data['lastname'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

// 我的表单

@csrf // 代码省略

0
0 Comments

问题的出现原因:

在Laravel 5.8中,尝试使用上述方式创建一个自定义的用户注册表单,但是无法成功保存用户数据。

解决方法:

为了解决这个问题,我们需要实现一个自定义的用户注册表单。以下是解决方法的步骤:

1. 首先,打开终端并进入到Laravel项目的根目录。

2. 使用以下命令创建一个新的用户注册表单:

php artisan make:controller Auth/RegisterController

3. 打开刚刚创建的控制器文件(位于app/Http/Controllers/Auth/RegisterController.php)。

4. 在控制器文件中,找到register方法。该方法负责处理用户注册的逻辑。

5. 在register方法中,将以下代码添加到$user变量的顶部:

use App\User;

6. 然后,将以下代码添加到register方法的末尾,用于保存用户数据:

$user = User::create([
    'firstname' => $data['firstname'],
    // 添加其他表单字段
]);

7. 保存并关闭文件。

8. 接下来,打开终端并运行以下命令来生成用户注册的视图:

php artisan make:auth

9. 运行以下命令以更新Composer自动加载的类映射:

composer dump-autoload

10. 最后,将以下代码添加到注册视图(位于resources/views/auth/register.blade.php)的合适位置,以显示自定义的字段:

<div class="form-group">
    <label for="firstname" class="col-md-4 control-label">First Name</label>
    <div class="col-md-6">
        <input id="firstname" type="text" class="form-control" name="firstname" value="{{ old('firstname') }}" required autofocus>
        @if ($errors->has('firstname'))
            <span class="help-block">
                <strong>{{ $errors->first('firstname') }}</strong>
            </span>
        @endif
    </div>
</div>

完成以上步骤后,我们就成功实现了一个自定义的用户注册表单,并且能够保存用户数据了。

0
0 Comments

在Laravel 5.8中实现自定义用户注册表单的方法。在使用自定义用户注册表单时,可能会遇到以下问题和解决方法。

问题:在Laravel 5.8中实现自定义用户注册表单时,可能会遇到以下问题:我已经将所有字段设置为fillable,但仍然无法成功注册用户。

解决方法:确保在User模型中将新属性设置为fillable。在User模型中,找到以下代码并确保新属性被包含在其中:

protected $fillable = ['firstname', 'lastname', 'email' ...];

这样做可以确保Laravel将新属性作为可填充字段处理,从而解决无法成功注册用户的问题。

0
0 Comments

Laravel 5.8中实现自定义用户注册表单的方法

在Laravel 5.8中,如果要将管理员和其他用户分为两个不同的组,就不能使用`Auth::routes();`两次,因此最好手动编写所有默认路由,以便更清楚地了解情况。以下是一个示例:

Route::group([
    'as'        => 'admin.',
    'prefix'    => 'admin',
],function(){
    Route::get('register', 'Auth\RegisterController')->name('register');
    Route::post('register', 'Auth\RegisterController');
});
Route::group([
    'as'        => 'user.',
],function(){
    Route::get('register', 'Auth\RegisterController')->name('register');
    Route::post('register', 'Auth\RegisterController');
});

在上述示例中,我们手动编写了管理员和用户的注册路由。您可以在这里找到其他所有默认路由的列表。

要查看可以重写的所有方法,请转到以下路径:

`\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php`

要更新重定向路径,请转到以下路径:

`\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RedirectsUsers.php`

0