
散々迷った
3ファイル間の設定でBladeからVueコンポーネントに配列渡せます。
test.blade.php
//Contorollerから渡しても良い
//ここではBladeファイル内で配列作成
@php
        $photes_data = array(
            array(
                'img_no'=> '0',
                'path' => 'laundry.jpg',
                'alt' => 'サーフボード'
            ),
            array(
                'img_no'=> '1',
                'path' => 'harusa.jpg',
                'alt' => '農業'
            ),
            array(
                'img_no'=> '2',
                'path' => 'ht-beach.jpeg',
                'alt' => 'ht_1'
            )
        );
@endphp
//コンポーネント作成
<div id="phote_gallery">
    //配列をJSONに変換
    <template-photegallery v-bind:photes_data="'{{ json_encode($photes_data) }}'"></template-photegallery>
</div>
resources/js/app.js
import {createApp} from 'vue';
import Test from './components/Test.vue';
if(document.getElementById('phote_gallery')){
    console.log("test.blade.php")
    createApp({})
        .component("template-photegallery", Test)
        .mount('#phote_gallery');
}Laravelにおいてresources/js/app.jsがVue.jsのエントリーポイントになるので、当ファイルにてVue.jsのコンポーネントをインスタンス化しています。
ただしこのファイルは全てのBladeファイルで読み込んでいるので、このコンポーネントを使わないファイルでもインスタンス化してしまいます。
それを防ぐためにid="phote_gallery"があるときだけインスタンス化したいいと考えて、js構文でhmtl内のID属性取得。
Vue3からVueアプリを作成する場合はcreateApp({})関数を使う様になったので、仕様通りに作成。
※Vue2の書き方では動作しませんでした。
人様のブログ記事なんですけど大変参考になったので、Vue2とVue3の違いが分からない人はぜひ目を通してみてください。
Vue 3の新しい機能と変更点・全11件
Test.vue
<script setup>
import { defineProps } from "vue";
const props = defineProps({
    photes_data: {
        type: String,
        required: true,
    },
});
console.log(props.photes_data);
</script>Propsを定義し、test.blade.phpで作成した<template-photegallery></template-photegallery>の「template-photegallery」を呼び出すことでBladeからVue3へのデータ連携が完了です。




![[ubuntu/Laravel]ブルートフォースアタック対策](https://otonan-syusyoku.work/wp-content/uploads/2021/09/IT基礎-300x150.png)
 
                         
                         
                        