Open nakatievent opened 3 years ago
とりあえずログインページは↑のような感じにする。 内容に変更があればその都度追加したり修正したりする。
*横向きにしないとアップロードできなかったので少し見づらい😓
Docker
の勉強と並行してログインフォームの作成に取り掛かろう。
Bootstrap
でレスポンシブなデザインということなので、とりあえずBootstrap
の使い方から復習してみる。
とりあえず、公式ドキュメントを見てみる。 Bootstrap5
やばい。。。
久々にHTMLとかBootstrapとか見てるけど難しい😓
とりあえず、Bootstrap
の公式サイトだったりググったサイトを見て使い方はなんとなく分かった。
ただ、グリッドシステムの具体的な使い方がまだ曖昧なので世界のアオキさんの PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】 のセクション2にBootstrapの講義があるのでそれを観てみることにする。
やっぱり動画で実装の仕方やどう表示されるかを観た方がイメージが付くな!
Bootstrap
の使い方がなんとなく分かったからフロント部分を作るのが楽しくなってきた!
issue
をレイアウトと作成に分けていたけど、そうするとissue
の数が多くなるから一つにまとめることにした。
他のページもそうしよう。
なんと、Laravel8
からはBootstrap
じゃなくてTailwindCSS
とのこと。
と言っても、正直TailwindCSS
とか全然分からない。
しかも、自動でログイン機能を実装したらlogin.blade.php
はおそらくTailwindCSS
のやり方でコードが書かれている。
もうこうなったら、無理やりBootstrap
で書くしかない!
下記のコードは自動生成されたコードである。 これを修正して自分で考えたログインフォームにしていく。
<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>
<!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>
ログイン機能をComposerからLaravel Breeze
を消して、Laravel/ui
にしたことでフロントの実装がBootstrap
になった。
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