カテゴリ: Laravel 更新日: 2025/12/15

Laravelでフォームに条件付き表示を加える方法(認証・ロール別)

Laravelでフォームに条件付き表示を加える(認証・ロール別)
Laravelでフォームに条件付き表示を加える(認証・ロール別)

先生と生徒の会話形式で理解しよう

生徒

「フォームの一部を管理者だけに見せたり、一般ユーザーには非表示にすることってできますか?」

先生

「できます。Laravelでは認証情報やユーザーのロールを使って、Bladeテンプレート内で条件分岐を行えます。」

生徒

「ロールって何ですか?」

先生

「ロールとは、ユーザーの権限の種類のことです。例えば『管理者』『一般ユーザー』『ゲスト』などがあり、それによって表示内容を変えられます。」

1. 認証済みユーザーだけに表示する方法

1. 認証済みユーザーだけに表示する方法
1. 認証済みユーザーだけに表示する方法

Laravelでは@authディレクティブを使うと、ログイン済みユーザーにだけ特定のフォームや入力欄を表示できます。


@auth
    <div class="form-group">
        <label for="secret_note">管理者用メモ</label>
        <textarea name="secret_note" id="secret_note" class="form-control"></textarea>
    </div>
@endauth

逆にログインしていない場合は@guestを使うと表示できます。

2. ユーザーロールに応じた表示

2. ユーザーロールに応じた表示
2. ユーザーロールに応じた表示

ユーザーに役割(role)を持たせている場合、Bladeでif文を使って条件分岐できます。例えば、管理者のみボタンを表示する場合です。


@if(Auth::user() && Auth::user()->role === 'admin')
    <button class="btn btn-danger">管理者専用ボタン</button>
@endif

ここでAuth::user()->roleは現在ログインしているユーザーのロールを取得しています。

3. 複数の条件でフォーム表示を制御

3. 複数の条件でフォーム表示を制御
3. 複数の条件でフォーム表示を制御

管理者または特定グループのみ表示したい場合は、||を使って条件を追加できます。


@if(Auth::check() && (Auth::user()->role === 'admin' || Auth::user()->role === 'manager'))
    <div class="form-group">
        <label>特別権限項目</label>
        <input type="text" class="form-control" name="special_item">
    </div>
@endif

このようにすると、管理者かマネージャーのみフォーム項目が表示され、他のユーザーには見えません。

4. フォームの安全性とユーザー体験

4. フォームの安全性とユーザー体験
4. フォームの安全性とユーザー体験

条件付き表示を使うことで、必要な人にだけ入力欄を見せられるため、フォームがシンプルになります。また、Bladeで表示制御するだけでなく、コントローラ側でもユーザーのロールを確認し、不正アクセスを防ぐことが重要です。


public function store(Request $request)
{
    if(Auth::user()->role !== 'admin'){
        abort(403, 'アクセス権限がありません');
    }

    // 管理者専用処理
    ...
}

フロントエンドだけでなく、バックエンドでもロールチェックを行うことで安全性が高まります。

5. 補足ポイント

5. 補足ポイント
5. 補足ポイント
  • @auth / @guest でログイン状態に応じて表示制御
  • ユーザーロールはAuth::user()->roleで確認
  • 複数条件は||&&で組み合わせ可能
  • バックエンドでもロールチェックを行い、フォームの安全性を確保する
カテゴリの一覧へ
新着記事
New1
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法
No.6
Java&Spring記事人気No6
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.7
Java&Spring記事人気No7
Laravel
LaravelでHello Worldを表示する方法を完全解説!初心者向けにルーティングと画面表示をやさしく説明
No.8
Java&Spring記事人気No8
Laravel
LaravelでRemember Me(ログイン状態保持)機能を実装する方法を完全解説!初心者でも安心の認証入門