Laravel9のページ追加

コントローラーを作成

artisanコマンドにて、コントローラーを追加する。

php artisan make:controller MypageController

「app/Http/Controllers/MypageController.php」にprofileメソッドを追加し、viewでページを呼び出す。

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MypageController extends Controller
{
    public function profile()
    {
        return view('profile');
    }
}

下位層にページを追加する場合は次のとおり。
下位層の場合、「.」で繋ぐことで「myage/profile」と同義となる。

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MypageController extends Controller
{
    public function profile()
    {
        return view('mypage.profile');
    }
}

ルートを追加する

「routes/web.php」にてルートを追加する。

// ① ページ追加
Route::get('ページパス', [コントローラのクラス, 'メソッド名']);

// ② ページ追加とリンクを設置した場合
Route::get('ページパス', [コントローラのクラス, 'メソッド名'])->name('リンク');

具体例は次のとおり。

// ① ページ追加
Route::get('/profile', [MypageController::class, 'profile']);

// ② ページ追加とリンクを設置した場合
Route::get('/profile', [MypageController::class, 'profile'])->name('profile');

// ③ 下位層にページ追加
Route::get('/mypage/profile', [MypageController::class, 'profile']);

// ④ 下位層にページ追加とリンクを設置した場合
Route::get('/mypage/profile', [MypageController::class, 'profile'])->name('mypage.profile');

Viewを作成する

ページを表示するためのviewを追加するため、「resources/views/profile.blade.php」を追加する。
注意点として、routeにてリンクを設置した場合、コントローラにて付けたリンクと記述が一致する必要がある。

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>プロフィールページ</h1>
    <a href="{{ route('home') }}">トップページ</a>
    <a href="{{ route('profile') }}">プロフィール</a>
    </div>
</div>
@endsection

コントローラにて下位層に追加した場合、「resources/views/mypage/profile.blade.php」に追加する。
先ほどと同様に、routeにてリンクを設置した場合、コントローラにて付けたリンクと記述が一致する必要がある。

@extends('layouts.app')

@section('content')
<div class="container">
    <h1>プロフィールページ</h1>
    <a href="{{ route('home') }}">トップページ</a>
    <a href="{{ route('/mypage/profile') }}">プロフィール</a>
    </div>
</div>
@endsection