ホームページ >PHPフレームワーク >Laravel >Laravelフォーム登録の書き方

Laravelフォーム登録の書き方

王林
王林オリジナル
2023-05-26 13:57:44556ブラウズ

Laravel は現在最も人気のある PHP 開発フレームワークの 1 つであり、その強力かつ柔軟な機能により、Web 開発者に強力な開発ツールと API が提供されます。 Laravel では、フォーム登録は非常に一般的な機能です。今日は、Laravel を使用してフォーム登録を実装する方法を学びます。

まず、フォームの送信を処理し、フォーム ページを表示するためのルートを Laravel で作成する必要があります。 routes/web.php ファイルに次のコードを追加できます:

Route::get('/register', 'AuthRegisterController@showRegistrationForm')->name('register');
Route::post('/register', 'AuthRegisterController@register')->name('register');

ここでは、2 つのルートを定義します。1 つは登録フォーム ページを表示するために使用される GET リクエスト ルートです。もう 1 つは POST リクエスト ルーティングで、フォーム送信データを処理するために使用されます。また、これら 2 つのルートに 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 トレイトを使用して、いくつかの一般的なメソッドが含まれる登録ユーザー関数を提供します。 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 トークン入力フィールドを生成し、form タグの action 属性で登録ルートを指定しました。 . .

これでLaravelフォームの登録は完了です。 php artisanserve コマンドを使用してローカル開発サーバーを起動し、http://localhost:8000/register にアクセスして登録フォーム ページを表示します。正しいフォーム データを入力してフォームを送信すると、システムは新しいユーザーを登録し、自動的にログインします。

つまり、Laravel でフォーム登録を実装するのは非常に簡単です。 Laravel は、さまざまな一般的で複雑な Web アプリケーションの実装に役立つ多くの組み込み関数とツールを提供します。これらの機能やツールを使いこなせれば、効率的で安定しており、保守が容易な Web アプリケーションを迅速に構築できます。

以上がLaravelフォーム登録の書き方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。