書籍「Laravelの教科書」Laravel13対応サポートガイド公開中 → ダウンロードはこちら

Laravelコントローラーからvue.jsへ変数を受け渡しつつ連携する方法

LaravelとVue連携

LaravelとVue.jsを連携させる方法を解説します。

このときLaravelのコントローラーから変数を受け渡し、これをVueファイル内で使えるようにします。

まず最初にLaravelにVueをインストールする必要がありますが、こちらは下記の記事をご覧ください。

【追加】

Laravel11とVue3連携はこちらご覧ください。

LaravelとVueの連携方法を初心者向けに分かりやすく解説

今回は次の流れで連携をさせます。

  1. Laravelのコントローラーから、ビューファイルを表示する設定をする
  2. ビューファイルにvue.jsを埋め込んで、vue.jsを表示する

Laravel8を使った動作を解説します。

それでは、各ステップを説明していきます。

① ルート設定を準備しておく

今回は次のようにしました。
Route::get('/test', [App\Http\Controllers\TestController::class, 'create'])->name('test.create');

TestControllerのcreateに処理を書いていきます。

②モデルとマイグレーションファイルを準備する

モデルとマイグレーションファイルを作っておきます。

php artisan make:model Test -m

作成後、database/migrationsから作成したマイグレーションファイルを開きます。

下記のように編集して保存した後、 php artisan migrate を実行します。

    public function up()
    {
        Schema::create('tests', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->timestamps();
        });
    }

さらに、データベースにログインします。作成した testsテーブルを確認します。

titleカラムを編集し、何か文字列をいれておいてください。

Junko
Junko

とりあえず今はテストなので、手動で編集します。

③コントローラーを準備しておく

下記コマンドを実行して、TestControllerを作ります。

php artisan make:controller TestController

作成したTestController.phpを開きます。

一番上にTestモデルを使うためのuse宣言をいれます。

use App\Models\Test;
さらに次のようにcreateメソッドを入れておきます。
tests をビューファイルに受け渡すようにします。
    public function create(){
        $tests=Test::all();
        return view('test', compact('tests'));
    }

④componentsにvueファイルを作る

いよいよvue.jsファイルを作っていきます。

resources/js/componentsの中に、今回用のvueファイルを作ります。

デフォルトでは、ExampleComponent.vueが入っています。

同じ場所に、TestComponents.vueを作ってください。

中身はまだ空っぽでOKです。

⑤app.jsを設定する

作成したvue.jsファイルについて、app.jsに記述しておきます。
resources/js 内のapp.jsファイルを開き、20行目あたりに、下記を追加します。
Vue.component('test-component', require('./components/TestComponent.vue').default);

これでVueファイルをblade.phpファイルに埋め込めるようになりました。

⑥ビューファイルを編集する

resources内にtest.blade.phpファイルを作ります。
ファイルの中に下記のようにいれます。
@extends('layouts.app')
@section('content')
<test-component
 :tests="{{$tests}}"
></test-component>
@endsection

<test-component></test-component>内にTestComponent.vue ファイルの内容が挿入されます。

<test-component>タグ内を上記のように設定することで、コントローラーから受け取った$testを、TestComponent.vueに引き渡せます。

⑦Vueファイルを編集する

resources/components のTestComponent.vueを開きます。
次のように入力します。
<template>
        <div class="row justify-content-center">
            <ul>
            <li v-for="test in tests" :key="test.id">{{test.title}}</li>
            </ul>
        </div>
</template>

<script>
    export default {
        props:["tests"]
    }
</script>

<template></template>が表示部分になります。

<script></script>が、vueのプログラミングを記述する箇所です。

script内の propsに、コントローラー→test.blade.phpから渡された変数 $testを入れておきます。
これで、$testが使えるようになりました。
template内に v-for=”test in tests”  という部分がありますが、これはまさに、foreachと同じ働きをします。
{{test.title}}とした部分には、testsテーブルのtitleが挿入されていきます。

⑧ファイルを表示してみる

npm run dev を実行した後、ブラウザで表示を確認してみましょう。

実際に表示してみた例が、上記のとおり。
データベースのtitleカラムにいれた内容が表示されます。
★追加
2021/11/19:
モデルとマイグレーションの処理について入っていなかったので、追加しました。
LaravelとVue連携

開発・生成AI研修のご相談はこちら

お問い合わせ

安全なWebアプリ開発・生成AI(Claude)の研修ご相談受け付けております。
詳細は法人サイトご覧ください。

研修について詳細を見てみる 開発について詳細を見てみる
 

生成AIを「安全に」使うための研修・セミナー

お問い合わせ

生成AIの業務活用で気になるのは、効率だけでなくセキュリティです。 実践的な活用に加え、セキュリティ対策もお伝えします。

詳細を見てみる

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版Laravel13への対応に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel13に対応。Laravel8からの各バージョンのテキストもご覧になれます♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した本を書きました。 書店やAmazon等のオンラインショップにて販売中
最新版Laravel13対応用サポートガイド(PDF)あり

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。
最新版Laravel13対応用
サポートガイド(PDF)あり

書籍の詳細を見てみる
シェアする
Twitter始めました。
タイトルとURLをコピーしました