🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Vue.js

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

Laravel

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

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1480閲覧

Laravel / Vue で YouTube API を用いて検索機能を実装したい

Take.Y

総合スコア12

Vue.js

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

Laravel

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

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/03/06 00:50

Laravel と Vue と YouTube API を連携させ、YouTube 検索機能を実装したいのですが、詰まってしまったのでお伺いしたいです。Laravel と YouTube API の連携はできているのですが、vue 側との連携ができずにいます。自分の想定としては、下記コードの 「Controller の searchVideo() の $keyword を、Vue側から編集して、検索結果を取得」するのをイメージしています。

#バージョン

PHP 7.3.26
Laravel Framework 6.20.16
vue@2.6.12

#該当のコード

##Laravel 側のコントローラー

php

1public function searchVideo() { 2 3 // 一部省略 4 5 $youtube = new Google_Service_YouTube($client); 6 7 $keyword = ""; 8 $params['q'] = $keyword; 9 $params['type'] = 'video'; 10 $params['maxResults'] = 10; 11 12 $videos = []; 13 //一部省略 14 return $videos; 15 }

参考 http://challenge.no1s.biz/programming/php/381

##Vue側の入力フォーム

js

1<input 2 v-model="search_word" 3 placeholder="検索キーワードを入力" 4> 5<v-btn @click="search_video(search_word)"> 6 検索 7</n-btn>

検索処理

js

1methods: { 2 search_video (search_word) { 3 axios.get("/api/searchVideo", { 4 keyword: search_word 5 }) 6 .then((res) => { 7 console.log(res.data); 8 }); 9 }, 10 }

data内部

js

1data() { 2 return { 3 results: null, 4 videos: [], 5 search_word: "", 6 }; 7 },

#現状

試しに検索フォームに「プログラミング」と入力、検索してみても明らかに関係のない動画一覧が表示されてしまいます。
イメージ説明

#試したこと

以下のように Controller の $keyword に直接検索ワードを入れてコンソールで確認すると、該当の検索結果が返されるので、 Controller の処理は問題ないと考えています。ですので、Vue 側の記述が問題だと考えました。

php

1$keyword = "プログラミング";

イメージ説明

以下サイトを参考に Vue 側にも値を設定しました。

参考 : https://qiita.com/nonkapibara/items/d12d1aae0710bb6e748a

js

1data: function() { 2 return { 3 results: null, 4 keyword: "", 5 order: "viewCount", 6 params: { 7 q: "", 8 part: "snippet", 9 type: "video", 10 maxResults: "20", 11 key: "" 12 } 13 };

js

1search_video: function() { 2 this.params.q = this.keyword; 3 var self = this; 4 axios 5 .get("/api/searchVideo", { 6 params: this.params 7 }) 8 .then(function(res) { 9 self.results = res.data.items; 10 }) 11 }

結果:特に変化なし

Controller の $keyword = "" に Vue 側から値を代入する方法がわかればすぐ解決できると思うのですが、それがわからずに詰まってしまいました。皆様のお知恵をお借りできれば幸いです。よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

自己解決

これで解決しました。
お騒がせしました。

js

1search_video () { 2 console.log(this.keyword); 3 axios.get("/api/searchVideo", { 4 params: { 5 keyword: this.keyword 6 } 7 }) 8 .then((res) => { 9 console.log(res.data); 10 }); 11 }, 12 },

Controller 内部の $keyword = ""; を以下に変更

php

1$params ['q'] = $_GET['keyword']; 2

投稿2021/03/06 01:31

Take.Y

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問