Laravel 是目前最流行的 PHP 开发框架之一,其强大而灵活的特性为 Web 开发者提供了强大的开发工具和 API。在 Laravel 中,表单注册是一个很常见的功能,今天我们就来学习如何用 Laravel 实现表单注册。
首先,我们需要在 Laravel 中创建一个路由,用于处理表单提交和显示表单页面。我们可以在 routes/web.php
文件中添加以下代码:
Route::get('/register', 'AuthRegisterController@showRegistrationForm')->name('register'); Route::post('/register', 'AuthRegisterController@register')->name('register');
在这里,我们定义了两个路由,一个是 GET 请求路由,用于显示注册表单页面,另一个是 POST 请求路由,用于处理表单提交数据。我们还给这两个路由分别起了名字为 register
。
接下来,我们需要定义一个控制器,来处理和渲染表单页面,我们可以使用以下命令来生成一个控制器:
php artisan make:controller AuthRegisterController
然后,我们需要在该控制器中编写处理表单和渲染表单的方法,代码如下:
namespace AppHttpControllersAuth; use AppHttpControllersController; use IlluminateFoundationAuthRegistersUsers; use IlluminateSupportFacadesValidator; use IlluminateHttpRequest; class RegisterController extends Controller { use RegistersUsers; protected $redirectTo = '/home'; public function __construct() { $this->middleware('guest'); } public function showRegistrationForm() { return view('auth.register'); } public function register(Request $request) { $this->validator($request->all())->validate(); $user = $this->create($request->all()); $this->guard()->login($user); return redirect($this->redirectTo); } 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) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); } }
在这里,我们使用了 Laravel 内置的 RegistersUsers
trait,来提供注册用户功能,它包含了一些常用方法,如 validator()
方法和 create()
方法。这些方法分别用于验证表单数据和创建新用户。
在 showRegistrationForm()
方法中,我们返回了一个模板视图,该视图包含了我们的表单内容。在 register()
方法中,我们首先使用 validator()
方法来验证表单数据,如果验证通过,我们就使用 create()
方法来创建新用户,并使用 guard()
方法来登录该用户。
最后,我们需要创建一个表单视图,来呈现给用户注册表单。我们可以在 resources/views/auth/register.blade.php
文件中添加以下内容:
<div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> <div class="card-header">Register</div> <div class="card-body"> <form method="POST" action="{{ route('register') }}"> @csrf <div class="form-group row"> <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label> <div class="col-md-6"> <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus> @error('name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address') }}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email"> @error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="password" class="col-md-4 col-form-label text-md-right">{{ __('Password') }}</label> <div class="col-md-6"> <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password"> @error('password') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('Confirm Password') }}</label> <div class="col-md-6"> <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required autocomplete="new-password"> </div> </div> <div class="form-group row mb-0"> <div class="col-md-6 offset-md-4"> <button type="submit" class="btn btn-primary"> {{ __('Register') }} </button> </div> </div> </form> </div> </div> </div> </div> </div>
在这里,我们使用了 Bootstrap 框架来美化表单样式。其中,我们使用了 @csrf
指令,来生成一个隐藏的 CSRF token 输入域,同时也在 form
标签的 action
属性中指定了注册路由。
到此为止,Laravel 表单注册就完成了。我们可以使用 php artisan serve
命令来启动本地开发服务器,并访问 http://localhost:8000/register
来查看注册表单页面。当我们填写正确的表单数据并提交表单时,系统就会注册新用户并自动登录他们。
总之,用 Laravel 实现表单注册就是这么简单。Laravel 提供了很多内置的功能和工具,来帮助我们实现各种各样的普通和复杂的 Web 应用。如果你善于利用这些功能和工具,就可以快速构建出高效、稳定、易维护的 Web 应用。
以上是laravel表单注册怎么写的详细内容。更多信息请关注PHP中文网其他相关文章!