ルーティングの基本

目次
  • 解説
  • 1. ルーティングの仕組み
  • 2. ホーム画面を作成しよう
進捗を変更する




解説

1. ルーティングの仕組み


PHP WEB中級』コースでは、「Dispatcher.php」がアプリケーションのルーティング処理を担当しており、リクエストに応じたコントローラーを呼び出す仕組みでした。

Laravelのルーティング処理は、「routes」フォルダー内の「web.php」ファイルに記述します。

「routes > web.php」ファイルを開いて、プロジェクト作成時に始めから記述されていた下記のコードに注目して、ルーティングの仕組みを確認しましょう。

Route::get('/', function () {
    return view('welcome');
});

ルーティングの仕組み

(1)Route::」に続けて、リクエストメソッドの種類(getやpost)に応じたルーターメソッドを記述します。
※ルーターメソッドには、「get()」や「post()」などがあります。
Route::get();
(2)ルーターメソッドの第一引数に、対応するURLのパスを指定します。下記の例では、「http://localhost/」に、get通信でアクセスした場合のルーティングとなります。
Route::get('/');
(3)ルーターメソッドの第二引数に、第一引数に指定したパスへのアクセス時の処理を記述します。
Route::get('/', function () {
    // ルーティング時の処理
});
(4)return view('welcome');」とすることで、「welcome.blade.php」ファイルを表示することができます。
view() ヘルパー関数の引数には、「views」フォルダー内の表示したいblade.phpのファイル名を記述します。
[ファイル名].blade.php を表示したい場合は、return view('[ファイル名]'); とします。
Route::get('/', function () {
    return view('welcome');
});

2. ホーム画面を作成しよう


前のページでは、ログイン成功時に「localhost/home」に遷移していましたが、対応するルーティングが存在しないため、404ページが表示されていました。

次の手順で「/home」にアクセス時のルーティングと、表示されるホーム画面を作成しましょう。

手順1

(1)views」フォルダー内に、ログイン成功時に表示されるホーム画面として、「home.blade.php」ファイルを作成してください。
(2)作成した「home.blade.php」を下記のコードで置き換えてください。
<!DOCTYPE html>
<html lang="ja">
    <head>
        <title>home</title>
        <link rel="stylesheet" href="{{ asset('css/style.css') }}">
    </head>
    <body>
        <header>
            <div class="container">
                <div class="flex_parent">
                    <div class="logo">
                        <a href="/">DigTweet
                        </a>
                    </div>
                    <nav>
                        {{-- Laravelの認証機能でログアウトするには、
                            URLパス「/logout」に対してpost通信でアクセスします。 --}}
                        <form name="logout" method="POST" action="/logout">
                            @csrf
                            <button type="submit">ログアウト</button>
                        </form>
                    </nav>
                </div>
            </div>
        </header>
        <main>
            <div class="section_inner">
                <div class="container">
                    <h1>ログイン成功!</h1>
                </div>
            </div>
        </main>
        <footer class="flex_parent">
            <p><small>&copy;2021 Dig Skill</small></p>
        </footer>
    </body>
</html>
(3)「routes > web.php」の最後の行に、「/home」に対してget通信でアクセス時に、「home.blade.php」を表示するコードを記述してください。
※コードを伏せておくので、余裕があれば自力でやってみましょう!

追記するコード
Route::get('/home', function () {
    return view('home');
});

ソース全文を表示
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

// Laravelの認証機能を有効化します。
Auth::routes();

Route::get('/home', function () {
    return view('home');
});

ブラウザから http://localhost/home にアクセスし、下画像の画面が表示されることを確認しましょう。また、画面右上のログアウトをクリックしてから、改めて「ログイン実行」 -> 「ホーム画面の表示」の流れを確認しておきましょう。

このページの学習を終えたら、Sourcetreeからコミット・プッシュをおこないましょう。