コントローラーを作成
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