首頁 >php框架 >Laravel >laravel表單註冊怎麼寫

laravel表單註冊怎麼寫

王林
王林原創
2023-05-26 13:57:44552瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn