nakatievent / my_baby_diary_app

0 stars 0 forks source link

ログインページ(login.blade.php)のレイアウト・作成 #7

Open nakatievent opened 3 years ago

nakatievent commented 3 years ago

402F830F-35DB-4978-968C-FE3B5AD8AC36_1_201_a

nakatievent commented 3 years ago

とりあえずログインページは↑のような感じにする。 内容に変更があればその都度追加したり修正したりする。

*横向きにしないとアップロードできなかったので少し見づらい😓

nakatievent commented 3 years ago

Dockerの勉強と並行してログインフォームの作成に取り掛かろう。

Bootstrapでレスポンシブなデザインということなので、とりあえずBootstrapの使い方から復習してみる。

とりあえず、公式ドキュメントを見てみる。 Bootstrap5

nakatievent commented 3 years ago

やばい。。。

久々にHTMLとかBootstrapとか見てるけど難しい😓

nakatievent commented 3 years ago

とりあえず、Bootstrapの公式サイトだったりググったサイトを見て使い方はなんとなく分かった。

ただ、グリッドシステムの具体的な使い方がまだ曖昧なので世界のアオキさんの PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】 のセクション2にBootstrapの講義があるのでそれを観てみることにする。

nakatievent commented 3 years ago

やっぱり動画で実装の仕方やどう表示されるかを観た方がイメージが付くな!

nakatievent commented 3 years ago

Bootstrapの使い方がなんとなく分かったからフロント部分を作るのが楽しくなってきた!

nakatievent commented 3 years ago

issueを統一

issueをレイアウトと作成に分けていたけど、そうするとissueの数が多くなるから一つにまとめることにした。

他のページもそうしよう。

nakatievent commented 3 years ago

Laravel8はBootstrapじゃなくてTailwindCSS。。。

なんと、Laravel8からはBootstrapじゃなくてTailwindCSSとのこと。

と言っても、正直TailwindCSSとか全然分からない。

しかも、自動でログイン機能を実装したらlogin.blade.phpはおそらくTailwindCSSのやり方でコードが書かれている。

泣きそうすぎてヤバイ×100。。。。

もうこうなったら、無理やりBootstrapで書くしかない!

nakatievent commented 3 years ago

自動生成されたログインページ

下記のコードは自動生成されたコードである。 これを修正して自分で考えたログインフォームにしていく。

<x-guest-layout>
    <x-auth-card>
        <x-slot name="logo">
            <a href="/">
                <x-application-logo class="w-20 h-20 fill-current text-gray-500" />
            </a>
        </x-slot>

        <!-- Session Status -->
        <x-auth-session-status class="mb-4" :status="session('status')" />

        <!-- Validation Errors -->
        <x-auth-validation-errors class="mb-4" :errors="$errors" />

        <form method="POST" action="{{ route('login') }}">
            @csrf

            <!-- Email Address -->
            <div>
                <x-label for="email" :value="__('Email')" />

                <x-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
            </div>

            <!-- Password -->
            <div class="mt-4">
                <x-label for="password" :value="__('Password')" />

                <x-input id="password" class="block mt-1 w-full"
                                type="password"
                                name="password"
                                required autocomplete="current-password" />
            </div>

            <!-- Remember Me -->
            <div class="block mt-4">
                <label for="remember_me" class="inline-flex items-center">
                    <input id="remember_me" type="checkbox" class="rounded border-gray-300 text-indigo-600 shadow-sm focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50" name="remember">
                    <span class="ml-2 text-sm text-gray-600">{{ __('Remember me') }}</span>
                </label>
            </div>

            <div class="flex items-center justify-end mt-4">
                @if (Route::has('password.request'))
                    <a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('password.request') }}">
                        {{ __('Forgot your password?') }}
                    </a>
                @endif

                <x-button class="ml-3">
                    {{ __('Log in') }}
                </x-button>
            </div>
        </form>
    </x-auth-card>
</x-guest-layout>
nakatievent commented 3 years ago

上記のコードを元にして作成したログインページ

<!doctype html>
<html lang="ja">

<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">

  <!-- Bootstrap CSS -->
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
  <link rel="stylesheet" type="text/css" href="login.css">

  <title>ログインページの編集</title>
</head>

<body>
  <div class="container">
    <div class="row">

    </div>

    <div class="row">
      <div class="col-md-6 mx-auto border border-dark border-3 p-5 position-absolute top-50 start-50 translate-middle">

        <!-- Session Status -->
        <x-auth-session-status class="mb-4" :status="session('status')" />

        <!-- Validation Errors -->
        <x-auth-validation-errors class="mb-4" :errors="$errors" />

        <div class="fw-bolder text-center">
          <h1 class="fw-bolder fs-2">採用担当者様<br>専用ログインフォーム</h1>
          <p></p>
          <p>下記の「専用ログイン」ボタンを押して頂くと、すぐにログインが可能です。</p>
        </div>

        <form class="col-lg-8 mx-auto" method="POST" action="{{ route('login') }}">
            @csrf

            <!-- メールアドレス -->
            <div class="form-group">
                <label for="email" class="form-label">メールアドレス</label>
                <input id="email" class="form-control" type="email" name="email" aria-describedby="emailHelp" :value="old('email')" required autofocus/>
            </div>

            <br>

            <!-- パスワード -->
            <div class="form-group">
                <label for="password" class="form-label">パスワード</label>
                <input id="password" class="form-control" type="password" name="password"
                       required autocomplete="current-password">
            </div>

            <br>

            <!-- Remember Me -->
            <div class="form-check">
                <label for="remember_me" class="inline-flex items-center">
                    <input id="remember_me" type="checkbox" class="form-check-input" name="remember">
                    <label class="form-check-label" for="remember_me">{{ __('ログイン状態を維持する') }}</label>
                </label>
            </div>

            <div class="flex items-center justify-center mt-4">
                @if (Route::has('password.request'))
                    <a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('password.request') }}">
                        {{ ('パスワードを忘れましたか?') }}
                    </a>
                @endif

                 <button type="submit" class="btn btn-primary">専用ログイン</button>
                </button>
            </div>
        </form>
        </div>
    </div>
  </div>

  <!-- Option 1: Bootstrap Bundle with Popper -->
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW"
    crossorigin="anonymous"></script>

</body>

</html>
nakatievent commented 3 years ago

Laravel BreezeからLaravel/uiに変更

ログイン機能をComposerからLaravel Breezeを消して、Laravel/uiにしたことでフロントの実装がBootstrapになった。

nakatievent commented 3 years ago

login.blade.phpの再作成

Laravel/uiにしたことでlogin.blade.phpが初期化されたので再度作り直すこととなった。

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-6 mx-auto border border-dark border-3 p-5 position-absolute top-50 start-50 translate-middle">

            <div class="fw-bolder text-center">
                <h1 class="fw-bolder fs-2">採用担当者様<br>専用ログインフォーム</h1>
                <p></p>
                <p>下記の「専用ログイン」ボタンを押して頂くと、すぐにログインが可能です。</p>
            </div>

            <form class="col-lg-8 mx-auto" method="POST" action="{{ route('login') }}">
                @csrf

                <div class="form-group">
                    <label for="email" class="form-label">メールアドレス</label>
                    <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" :value="old('email')" required autocomplete="email" autofocus>

                    @error('email')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                    @enderror
                </div>

                <br>

                <div class="form-group">
                    <label for="password" class="form-label">パスワード</label>
                    <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required     
                        autocomplete="current-password">

                    @error('password')
                    <span class="invalid-feedback" role="alert">
                        <strong>{{ $message }}</strong>
                    </span>
                    @enderror
                </div>

                <br>

                <div class="form-check">
                    <label for="remember" class="inline-flex items-center">
                        <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
                        <label class="form-check-label" for="remember">
                            {{ __('ログイン状態を維持する') }}
                        </label>
                </div>

                <div class="flex items-center justify-center mt-4">
                    @if (Route::has('password.request'))
                        <a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('password.request') }}">
                            {{ ('パスワードを忘れましたか?') }}
                        </a>
                    @endif
                         <button type="submit" class="btn btn-primary">{{ __('専用ログイン') }}</button>
                </div>

            </form>
        </div>
    </div>
</div>
@endsection