laravelとnuxt.jsでレビュー機能を作成したいです。
Property or method comment is not defined ,Property or method stars is not defined とエラーが出てしまいます。dataのところにcomment:'',stars: '',と記述しているのですが、エラーが解決しないので、アドバイスをいただきたいです。
下記のサイトを参考にさせていただいてます。
https://blog.capilano-fw.com/?p=7341
nuxt
1index.vue 2<template> 3<div class="modal fade" id="review-modal"> 4 <div class="form-group"> 5 <div class="name" > 6 <div class="post_name" v-for="post in posts" > 7 <div class="box"> <nuxt-link :to="`post/${post.id}`"> 8 {{post.name}}</nuxt-link><div class="content2"> 9 {{post.content2}} 10 </div><img v-bind:src="post.path" class="image" > 11 <a href="#" type="button" v-if="!hasMyReview(p.reviews)" @click.prevent="openReviewForm(p.id)"> 12 レビューを投稿 13 </a> 14 </div> 15 16 </div> 17 </div> 18 </div> 19 <h4>スター</h4> 20 <div v-for="star in [5,4,3,2,1]"> 21 <input v-model="stars" type="radio" :value="star"> 22 </div> 23 <div class="form-group"> 24 <h4>コメント</h4> 25 <textarea class="form-control" v-model="comment"></textarea> 26 </div> 27 <div class="modal-footer"> 28 <button type="button" class="btn btn-link mr-2" data-dismiss="modal">閉じる 29 </button> 30 <button type="button" class="btn btn-warning" @click="onSubmit">登録する 31 </button> 32 </div> 33 </div> 34</template> 35 36<style> 37.body-style { 38 background-color: #eee; 39} 40.form-group{ 41 color:black; 42} 43</style> 44 45<script> 46import axios from 'axios'; 47layout:'sample_layout', 48export default { 49 data: { 50 userId: parseInt('{{ auth()->user()->id ?? -1 }}'), // ログイン・ユーザーID ・・・ ⑤ 51 posts: [], 52 post:[], 53 stars: '', 54 reviewParams: { 55 post_id: '', 56 comment:'' 57 } 58 }, 59 head: { 60 61 }、 62 created(){ 63 axios.get(`http://127.0.0.1:8000/api/review`) 64 .then(response => { 65 this.posts= response.data.posts 66 67 }); 68 69 }, 70 methods: { 71 onSubmit(postId) { 72 axios.post('http://127.0.0.1:8000/api/post', { 73 .then(response => { 74 75 if(response.data.result === true) { 76 77 this.getPosts(); 78 $('#review-modal').modal('hide'); 79 80 } 81 82 }) 83 .then((res) => { 84 console.log(res) 85 this.stars = ''; 86 this.comment = ''; 87 this.save = true; 88 console.log('created'); 89 }); 90 } 91 }, 92}
laravel
1 2<?php 3 4namespace App\Http\Model; 5 6use Illuminate\Database\Eloquent\Model; 7 8class Post extends Model 9{ 10 public function posts() 11 { 12 return $this->hasMany('App\Models\Post'); 13 } 14} 15
laravel
1ReviewController.php 2<?php 3 4namespace App\Http\Controllers; 5 6use Illuminate\Http\Request; 7 8class ReviewController extends Controller 9{ 10 public function review(Request $request) 11 { 12 $post = Post::all(); 13 return response()->json(compact('post'),200); 14 } 15 16 public function post(Request $request) { 17 if(!auth()->check()) { 18 $fail('レビューするにはログインしてください。'); 19 return; 20 } 21 22 $review = new \App\PostReview(); 23 $review->post_id = $request->post_id; 24 $review->user_id = $request->user()->id; 25 $review->stars = $request->stars; 26 $review->comment = $request->comment; 27 $result = $review->save(); 28 return ['result' => $result]; 29 } 30 31} 32
laravel
1api.php 2Route::get('/review','ReviewController@review'); 3Route::post('/posts','ReviewController@post'); 4
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。