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 側から値を代入する方法がわかればすぐ解決できると思うのですが、それがわからずに詰まってしまいました。皆様のお知恵をお借りできれば幸いです。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。