質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1755閲覧

Laravel + VueでDBから取得したデータをv-selectでセレクトボックスとして扱いたい

tomtom123

総合スコア1

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/06/20 09:32

実現したいこと

LaravelでDBから取得したデータをVue側でv-selectを使用してセレクトボックスとして扱いたい

前提

Laravel
Vuejs

Laravelでカテゴリの一覧をDBから取得
取得したデータを返す
返ってきたデータをVuejsで受け取り、v-selectを使用し、セレクトボックスとして扱おうと試みています

発生している問題・エラーメッセージ

セレクトボックス内を確認すると中身が表示されない
添付にあるcategoriesはDBから取得したデータ(見にくくてすみません)
選択肢の数が要素数となっているため、値の受け渡しはできているようだが、表示がされない
イメージ説明

該当のソースコード

laravel(controller)

1 public function create() 2 { 3 $categories = Category::all(); 4 5 $data = [ 6 'categories' => $categories, 7 ]; 8 return $data; 9 }

Vuejs(param受け取り部分)

1 export default { 2 data: function () { 3 return { 4 categories: [] 5 } 6 }, 7 methods: { 8 getParameters() { 9 axios.get('/api/blog/create') 10 .then((res) => { 11 this.categories = res.data.categories; 12 }); 13 } 14 }, 15 mounted() { 16 this.getParameters(); 17 } 18 }

Vuejs(vselect部分)

1 categories: {{ categories }} 2 <v-select 3 label="カテゴリ" 4 v-model="selected" 5 :items="categories" 6 item-text="name" 7 item-value="id" 8 name="category_id" 9 variant="underlined" 10 return-object 11 ></v-select>

試したこと

v-selectの扱い方を調べた結果、入力フォームのvalueにあてたいものにはitem-value、表示させたいものにはitem-textに記載すればいいようだが、その通りにしても表示されない
参考:
https://qiita.com/akido_/items/96ced6cd5fd9929c666f

補足情報(FW/ツールのバージョンなど)

Laravel 10.13.0
vue 3.3.4

npm list vue実行結果↓

+-- @tinymce/tinymce-vue@5.1.0 | `-- vue@3.3.4 | `-- @vue/server-renderer@3.3.4 | `-- vue@3.3.4 deduped +-- @vitejs/plugin-vue@4.2.3 | `-- vue@3.3.4 deduped +-- vue-router@4.2.2 | `-- vue@3.3.4 deduped `-- vuetify@3.3.2 `-- vue@3.3.4 deduped

Laravelについてはある程度扱ってきましたが、vueに関しては学習中の身です。
お手柔らかに回答いただければと思います。

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

vuetify3を使用しているならitem-textは対応していません。item-titleとする必要があるようです。

Vuetify3.0betaでv-selectのitem-textが表示されない場合の対応

あと、せっかくVuetify3を使っているならVue3.2以上の方が書きやすいとは思います。

getParameterの中はフロントエンド処理の結果を流す場所なので任意に書き換えてください。

vue

1<template> 2<div class="about"> 3 <p>選んだもの:{{selected}}</p> 4 <v-select 5 item-title="name" 6 item-value="id" 7 :items="categories" 8 label="カテゴリ" 9 v-model="selected" 10 > 11 </v-select> 12</div> 13</template> 14<script setup> 15import { reactive,ref,onMounted} from 'vue' 16const selected = ref(null) //Vue3.2以上でv-modelを使用する場合ref定義が必要 17const data = [ 18 {id:1,name:"カテゴリ1"}, 19 {id:2,name:"カテゴリ2"}, 20 {id:3,name:"カテゴリ3"}, 21 {id:4,name:"カテゴリ4"} 22] 23const categories = reactive([]) 24const getParameters =()=>{ 25 Object.assign(categories,data) 26} 27onMounted(()=>{ 28 getParameters(); 29}) 30</script>

投稿2023/06/28 05:01

編集2023/06/28 05:02
FKM

総合スコア3660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomtom123

2023/06/29 13:54

こちら参考に問題解消できました。 貴重なご意見ありがとうございます! 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問