Laravel オリジナルの設定ファイルを作成してコントローラで呼び出す

# 目的

- Laravelの設定ファイルへの追記方法と設定ファイルの読み込み方法をまとめる
- ※本説明でいう設定ファイルとは.envファイルではなく、`アプリ名ディレクトリ/config`直下にあるファイルを指す

# 実施環境

- ハードウェア環境

| 項目 | 情報 |
| --- | --- |
| OS | macOS Catalina(10.15.5) |
| ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
| プロセッサ | 2GHzクアッドコアIntel Core i5 |
| メモリ | 32 GB 3733 MHz LPDDR4 |
| グラフィックス | Intel Iris Plus Graphics 1536 MB |

- ソフトウェア環境

| 項目 | 情報 | 備考 |
| --- | --- | --- |
| PHPバージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravelバージョン | 7.0.8 | commposerを用いてこちらの方法で導入→[Mac Laravelの環境構築を行う](https://qiita.com/miriwo/items/adaaaeecae69d6392e08) |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いてこちらの方法で導入→[Mac HomebrewでMySQLをインストールする](https://qiita.com/miriwo/items/ef6a064bc545fbea29d9) |

# 前提条件

- 実施環境に記載した環境、またはそれに準ずる環境が用意されておりLaravelアプリが作成されていること。

# 前提情報

- 筆者は下記の記事で作成したアプリを用いて本記事の動作を確認する。
    - [Laravel CRUD処理を使った投稿アプリを作成する その7 問い合わせフォームの作成](https://qiita.com/miriwo/items/301f645f2f279668c6ea)
- 下記に本記事を記載する際に検証で使用したソースコードのリモートリポジトリのリンクを下記に記載する。
    - [https://github.com/miriwo0104/laravel_crud/tree/config](https://github.com/miriwo0104/laravel_crud/tree/config)

# 読後感

- `アプリ名ディレクトリ/config`直下の設定ファイルに独自の設定を追記することができる。
- `アプリ名ディレクトリ/config`直下の設定ファイルに記載されている値を読み込み表示することができる。

# 概要

1. 設定ファイルの作成と記載
1. ルーティング情報の追記
1. コントローラファイルの作成と記載
1. ビューファイルの作成と記載
1. 確認


# 詳細

1. 設定ファイルの作成と記載
    1. アプリ名ディレクトリで下記コマンドを実行して設定ファイルを作成する。

        ```terminal
        $ vi config/config_test.php
        ```
    1. 開いたファイルに下記の内容を追記し保存して閉じる。

        ```アプリ名ディレクトリ/config/config_test.php
        <?php
  
        return [
            # 文字列の設定
            'config_str' => 'これは設定ファイルで設定された文字列です。',
        ]

        ?>
        ```
    1. 下記コマンドを実行してconfigキャッシュをクリアする。（自分へ: 設定系のファイルをいじったらこれを実行する癖をつける。）

        ```terminal
        $ php artisan config:cache
        ```
1. ルーティング情報の追記
    1. アプリ名ディレクトリで下記コマンドを実行してルーティングファイルを開く。

        ```terminal
        $ vi routes/web.php
        ```
    1. 下記の内容を追記する。

        ```アプリ名ディレクトリ/routes/web.php
        Route::get('/config_check', 'ConfigCheckController@config_check')->name('config_check');
        ```
1. コントローラファイルの作成と記載
    1. アプリ名ディレクトリで下記コマンドを実行してコントローラファイルを作成する。

        ```terminal
        $ php artisan make:controller ConfigCheckController
        ```
    1. アプリ名ディレクトリで下記コマンドを実行してただいま作成したコントローラファイルを開く。

        ```terminal
        $ vi app/Http/Controllers/ConfigCheckController.php 
        ```
    下記の様に記載を行う。

        ```アプリ名ディレクトリ/app/Http/Controllers/ConfigCheckController.php
        <?php
        
        namespace App\Http\Controllers;
        
        use Illuminate\Http\Request;
        // 下記を追記する
        use Illuminate\Support\Facades\Config;
        
        class ConfigCheckController extends Controller
        {
            // 下記を追記する
            public function config_check()
            {
                // アプリ名ディレクトリ/config直下に存在するconfig_test.phpファイルで定義されているconfig_strの文字列を$strに格納する処理
                $str = Config::get('config_test.config_str');
                return view('checks.config_check', [
                    'str' => $str,
                ]);
            }
            // 上記までを追記する
        }
        ```
1. ビューファイルの作成と記載
    1. アプリ名ディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。

        ```terminal
        $ mkdir resources/views/checks
        ```
    1. アプリ名ディレクトリで下記コマンドを実行してビューファイルを作成する。

        ```terminal
        $ vi resources/views/checks/config_check.blade.php
        ```
    1. 開いたビューファイルに下記の内容を記載する。

        ```アプリ名ディレクトリ/resources/views/checks/config_check.blade.php
        {{ $str }}
        ```
1. 確認
    1. アプリ名ディレクトリで下記コマンドを実行してローカルサーバを起動する。

        ```terminal
        $ php artisan serve
        ```
    1. ブラウザで下記にアクセスする。（Authの認証機能が付与されているLaravelアプリで下記にアクセスする場合、ログインが必要になる場合がある。）
        - [http://127.0.0.1:8000/config_check](http://127.0.0.1:8000/config_check)
    1. 下記の様に、設定ファイルに記載した内容がブラウザ上で表示されていれば作業完了である。

        ＊画像

# 参考文献

- [Laravel 7.x 設定](https://readouble.com/laravel/7.x/ja/configuration.html)
- [LaravelでConfigファイルをサブディレクトリに作成する](https://qiita.com/near108/items/1ba3d3f74de64bcaf82a)