初心者です。
laravelとvueを使って検索機能を実装しようとしています。
現状は検索メソッドは動いているが中身を引っ張ってきて無いです。コンソールにはundefinedが表示されます。
参考にしたサイト
https://www.webopixel.net/javascript/1379.html
TaskController
1apiのTaskController 2 3<?php 4 5namespace App\Http\Controllers\Api; 6 7use Request; 8use App\Http\Controllers\Controller; 9use App\Http\Requests\TaskRequest; 10use App\Task; 11 12class TaskController extends Controller 13{ 14 public function index() 15 { 16 $queryTitle = Request::get('title'); 17 $queryTitleには入力した値が入ってきている 18 19 return Task::where('title', 'LIKE', "%$queryTitle%")->get(); 20 //DB::table('tasks')->where('title', 'LIKE', '%'.$queryTitle.'%')->get(); こんな書き方もしてみたが変わらず 21 } 22}
api
1Route::get('tasks/search', 'Api\TaskController@index');
親コンポーネント <template> <nav class="navbar navbar-expand-lg navbar-light bg-light navbar-dark bg-primary"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <a class="navbar-brand" href="#">Navbar</a> <div class="collapse navbar-collapse" id="navbarTogglerDemo03"> <ul class="navbar-nav mr-auto mt-2 mt-lg-0"> <li class="nav-item active"> <router-link v-bind:to="{name: 'task.list'}"> <button class="btn btn-primary" type="submit">List</button> </router-link> </li> <li class="nav-item"> <router-link v-bind:to="{name: 'task.create'}"> <button class="btn btn-primary" type="submit">Add</button> </router-link> </li> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a> </li> </ul> <TaskSearchComponent />子コンポ呼び出し </div> </nav> </template> <script> import TaskSearchComponent from './TaskSearchComponent' export default { components: { TaskSearchComponent, }, } </script>
TaskSearchComponent
1子コンポーネント 2<template> 3 <form class="form-inline my-2 my-lg-0"> 4 <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search" v-model="keyword"> 5 <button class="btn btn-outline-success my-2 my-sm-0" type="submit" v-on:click.prevent="getSearch()">Search</button> 6 </form> 7</template> 8 9<script> 10export default { 11 data(){ 12 return { 13 keyword: '', 14 tasks: [], 15 } 16 }, 17 methods: { 18 getSearch(){ 19 axios.get('api/tasks/search?title=' + this.keyword) 20 .then(res => { 21 this.tasks = this.data; 22 console.log(this.data) 23 }) 24 .catch(error => { 25 console.log('データの取得に失敗しました') 26 }); 27 } 28 }, 29 watch: { 30 keyword(){ 31 this.getSearch(); 32 } 33 } 34} 35</script>
コントローラーまでkeywordは飛んで行っていると思うのですが、コントローラーが原因でしょうか?
どなたか知恵を貸していただきたいです。
よろしくお願いします。
php 7.4.2
laravel 6.0
vue.js 2.6.11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/11 21:00
2020/03/11 22:20