使用 Auth 注册 Laravel 不起作用

Met*_*ad 1 php registration user-registration laravel laravel-authentication

我正在尝试使用 Laravel 提供的 Auth 注册用户,但我不能。另外,我在同一个视图(索引)中进行登录和注册。通过一个按钮,我可以将视图更改为登录或注册。所有这一切都发生在sidenav

这是我的路线:

//Auth routes
Route::get('/home', 'HomeController@home')->name('home');

Route::view('/', 'layouts/index');

Route::view('/profile', 'layouts/profile');
Route::get('/welcome', 'UserController@getUsers');

    // Authentication Routes
Route::post('/', 'Auth\LoginController@login');
Route::post('/', 'Auth\LoginController@logout')->name('logout');

// Registration Routes...
Route::post('/', 'Auth\RegisterController@create')->name('register');
Run Code Online (Sandbox Code Playgroud)

这是注册视图:

    <button type="button" id="registGoBackButton" class="btn accessButtons goBackButton" style="display:block;"><i class="fas fa-chevron-left"></i></button>
  <div class="row user-view">
    <blockquote  style="margin-top:0px; margin-bottom:30px;"><h3 style="margin-top:0px; margin-bottom:30px;">Register</h3></blockquote>
    <form class="" action="{{ route('register') }}" method="POST">
      @csrf
      <div class="input-field col s6">
        <input name="name" id="registName" type="text" class="validate" required value="">
        <label for="name">{{ __('Name') }}</label>
      </div>
      <div class="input-field col s6">
        <input name="username" id="registUsername" type="text" class="validate" required value="{{ old('username') }}">
        <label for="username">{{ __('Username') }}</label>
      </div>
      <div class="input-field col s12">
        <input name="email" id="registEmail" type="email" class="validate" required value="">
        <label for="email">{{ __('Email') }}</label>
      </div>
      <div class="input-field col s12">
        <input name="password" id="registPassword" type="password" class="validate" required>
        <label for="password">{{ __('Password') }}</label>
      </div>
     <button class="col s4 btn waves-effect #00796b teal darken-2" type="submit" name="action" style="margin-top:30px;">Submit
        <i class="material-icons"></i>
      </button>
    </form>
  </div>
Run Code Online (Sandbox Code Playgroud)

这是我的注册控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;

class RegisterController extends Controller
{

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = 'welcome';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'username' => 'required|string|max:225|unique:users',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'username' => $data['username'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}
Run Code Online (Sandbox Code Playgroud)

JPa*_*ark 5

问题是由于控制器操作造成的。您的表单应该发布到RegisterController@register函数而不是create()函数。因此,只需将您的路线更改为:

// Registration Routes...
Route::post('/', 'Auth\RegisterController@register')->name('register');
Run Code Online (Sandbox Code Playgroud)

如果您查看您的RegisterController,您会注意到它包含RegistersUsers包含register()方法的特征:

/**
 * Handle a registration request for the application.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}
Run Code Online (Sandbox Code Playgroud)