SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

LivewireとInertiaによるLaravelのフロントエンド的画面作成入門

LaravelのInertia+Vueの組み合わせでフロントエンド的な画面を作成する【応用編】

LivewireとInertiaによるLaravelのフロントエンド的画面作成入門 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 PHPフレームワークのデファクトスタンダードの地位を確立したといえるLaravelには、フロントエンド開発的な画面の作成を標準でサポートしています。本連載では、その際に利用するLivewireとInertiaによるVueの利用方法を紹介しています。前回は、InertiaとVueの組合せを使って、Inertiaの使い方の基本を紹介しました。最終回である今回は、Inertiaにおける画面遷移の方法とフォームの扱い方を紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

Inertiaによる画面遷移

 本連載は、LaravelのLivewireとInertiaを利用して、フロントエンド的な画面作成方法を紹介しています。最終回である今回は、Inertiaによる画面遷移から話を始めていきます。本連載のサンプルデータは、GitHubから参照できます。

アクションメソッドを省略できるinertia()

 前回のリスト5で作成したカクテルリスト画面には、以下のコードの[カクテルの追加はこちら]というリンクがあります(前回のリスト5の(13))。

<a href="#">カクテルの追加はこちら</a>  // (13)

 このリンクをクリックすると、図1のカクテル追加画面が表示されるとします。この画面は、第2回の図3と同様の画面であり、その仕組みも第2回と同様です。

図1:カクテル追加画面
図1:カクテル追加画面

 前回のInertiaの利用手順で紹介したように、このカクテル追加画面を表示させる基本的なコーディングは、Bladeを利用したものと変わりません。

 まずは、コントローラクラスにアクションメソッドを用意し、ルーティング登録をする必要があります。ただし、単に画面を表示させる場合は、アクションメソッド内の処理内容は以下の1行のみ、すなわち単なるコンポーネントへの処理移管コードのみとなります。

 なお、カクテル追加画面のコンポーネントをCocktailAdd.vueとしています。

return Inertia::render("cocktail/CocktailAdd");

 この場合、アクションメソッドの実装を省略できるルーティング登録方法があり、リスト1のコードとなります。

[リスト1]first-inertia/routes/web.php
Route::inertia("/showCocktailAdd", "cocktail/CocktailAdd");

 Routeクラスのget()メソッドの代わりに、inertia()メソッドを利用し、第2引数として表示させるコンポーネントを指定します。これだけで、第1引数のパスにアクセスした場合に、指定コンポーネントが表示されるようになります。

リンク設定はLinkコンポーネントを利用

 これでルーティングの設定ができたので、リスト1のパスである/showCocktailAddを、前回のリスト5の(13)のhref属性に指定すれば、図1のカクテル追加画面が表示されます。

 ただしこの方法、すなわち通常のaタグによるリンクでは、画面全体が再レンダリングされる問題があります(図2)。これはaタグの性質を考えると当然ですが、効率が悪く、フロントエンド的な画面遷移ではありません。

図2:aタグでは画面全体が再レンダリングされる
図2:aタグでは画面全体が再レンダリングされる

 その問題を解決する手段として、InertiaにはLinkコンポーネントが用意されています。これを利用し、カクテル追加画面を表示させるリンクコードは、リスト2のようにします。こうすることで、図3のように、必要な部分だけがレンダリングされるようになります。図3でいえば赤色の部分、すなわちidがappのdivタグ内だけがJavaScriptによってレンダリングされるようになり、シングルページアプリケーションのような画面遷移が実現できるようになります。

[リスト2]first-inertia/resources/js/pages/cocktail/CocktailList.vue
  :
<p>
  <Link href="/showCocktailAdd">カクテルの追加はこちら</Link>
</p>
  :
図3:Linkタグではidがappのdivタグ内だけが再レンダリングされる
図3:Linkタグではidがappのdivタグ内だけが再レンダリングされる

次のページ
Inertiaにおけるフォームの実装方法

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
LivewireとInertiaによるLaravelのフロントエンド的画面作成入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 齊藤 新三(サイトウ シンゾウ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook <個人紹介>WINGSプロジェクト所属のテクニカルライター。Web系製作会社のシステム部門、SI会社を経てフリーランスとして独立。屋号はSarva(サルヴァ)。HAL大阪の非常勤講師を兼務。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/22255 2025/09/26 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング