【Laravel】プロジェクトを作るときやること Step by Step

## 必要なら composer をアップデートしておく。

```sh
$ sudo composer self-update
```
## 先ずプロジェクトを作る

```sh
$ composer create-project --prefer-dist laravel/laravel プロジェクト名　　　← プロジェクトを作る
$ cd プロジェクト名　　　← プロジェクトのディレクトリに移る
$ ./artisan --version　　　← バージョンチェック (やらなくてもいいよ)
Laravel Framework 5.7.21
```
## .env の修正
/config/app.php は .env を読み込むので、app.php を修正するより .env を修正する。
先ずは DB 回りを中心に修正してDBに接続できるようにする。(接続できないとマイグレーションできない。)
その他必要な項目(APP_NAMEとか)もここで修正しておく。

```sh:.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=(DB名)
DB_USERNAME=(DBユーザ名)
DB_PASSWORD=(DBユーザのパスワード)
```
## その他のルーティン

```sh:プロジェクトルートで
$ sudo chmod 777 -Rf storage  ← storage 以下に書き込み権限を付ける
$ ./artisan make:auth  ← 認証を追加する(ログインが不要なら要らないよ)
$ ./artisan migrate  ← データベースにテーブルを作る
$ npm install  ← npmがpackage.jsonのnode_modulesをインストールする JSフレームワークを使うなら実行
```
## ログイン画面の日本語化
デフォルトのブレードが [多言語化](https://readouble.com/laravel/5.7/ja/localization.html)対応しているので、以下の修正でさくっと日本語化する。時間もね。

```php:config/app.php
'timezone' => 'Asia/Tokyo',

'locale' => 'ja',
'fallback_locale' => 'ja',
'faker_locale' => 'ja_JP',
```
以下の内容で作成する。

```json:resources/lang/ja.json
{
    "Login":"ログイン",
    "E-Mail Address":"メールアドレス",
    "Password":"パスワード",
    "Remember Me":"ログイン状態を保存する",
    "Forgot Your Password?":"パスワードをお忘れですか ?",
    "Register":"登録",
    "Name":"お名前",
    "Confirm Password":"パスワード(確認用)",
    "Reset Password":"パスワードリセット",
    "Send Password Reset Link":"パスワードリセットリンク送信",
    "Logout":"ログアウト"
}
```
**解説：**{{ __('Login') }}の様に、ファイル名が省略されている場合は、resources/lang/ロケール.json で定義する。
完全版は [こちら](https://qiita.com/nekyo/items/eba7f145a71a5d04b57d)
## バリデーションなどのメッセージまで日本語化するには
resources/lang/en を resouces/lang/ja にコピーして ja 以下のファイルを翻訳する。
## ユーザー登録を無効化
無効にしない人は次の章へスキップ→
レジスト(ユーザー登録)は適当なメアドを入れてもメアドの形式なら登録できてしまう。
本来なら入力されたメールアドレスにリンクを送って、それを踏むことで登録するとか
管理者が本登録しないとログインできないとかいう処理が必要と思う。
メール認証を実装したい場合はこちらを参照→ [Laravelユーザ登録時にメール認証する(v5.7以上)](https://qiita.com/nekyo/items/03e50b4d0dd6f09287d6)

不特定多数のユーザー登録を許さないシステムなら無効にしておく。
ルーターを修正できれば簡単だけど Auth::routes(); で隠蔽されているので、コントローラーで対応する。
以下のメソッドを追記(オーバーライド)する。

```php:app/Http/Controller/Auth/RegisterController.php
  public function showRegistrationForm()
  {
    abort(404);
  }
```
resources/views/welcome.blade.php から Register のリンクを削除するのを忘れずに。
## Forgot Passwordも無効にする
無効にしない人は次の章にスキップ→
メアドを使わない場合は、当然パスワードリセットメールも送れないので
以下のメソッドを追記(オーバーライド)する。

```php:app/Http/Controller/Auth/ForgotPasswordController.php
    public function showLinkRequestForm()
    {
        abort(404);
    }    
```

```php:app/Http/Controller/Auth/ResetPasswordController.php
    public function showResetForm()
    {
        abort(404);
    }
```
resources/views/auth/login.blade.php の ForgotPassword リンクを削除するのも忘れずに。
## メアド以外でログインする場合は
そのままメアドでログインする人は次の章にスキップ→
デフォルトはメアドとパスワードでログインするけれど、メアドを使わないシステム等の場合は、[【Laravel】メアド以外でログインしたい](https://qiita.com/nekyo/items/d1d9b11d94be1a022608) を参照。
## fontawesome を使う
fontawesomeを使わない場合は次の章にスキップ→
[Laravel5.7 で fontawesome を使う(文字化け対策付き)](https://qiita.com/nekyo/items/83c3ac9b480bf0109122)
## welcome画面を使わない
welcome画面を使う場合は次の章にスキップ→
welcome画面を使わずにいきなりログイン画面から入りたい場合は既存の / の記述を削除して
/home にリダイレクトする設定にする。home は認証しないと入れない画面なのでログイン画面が表示される。

```php:/routes/web.php
- Route::get('/', function () {
-    return view('welcome');
- });
+ Route::redirect('/', url('/home'), 301);
```
##Gmailを使用する
環境によってはメールが使えないので、そんな時はGmailを使う。

```sh:.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=(Gmailのアドレス:例 hoge@gmail.com)
MAIL_PASSWORD=(Gmailのパスワード:例 password)
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=(Fromアドレス:例 hoge@gmail.com)
MAIL_FROM_NAME=(Fromアドレスの名前:例 hoge@gmail.com)
```

[- 目次 -](https://qiita.com/search?q=laravel+nekyo)