无法在评论Laravel 5.7下显示我的回复

时间:2018-10-12 01:32:19

标签: laravel laravel-5.7

我无法在每个评论下显示我的回复。这是我的代码...

评论模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function commentable()
    {
        return $this->morphTo();
    }

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function comments()
    {
        return $this->morphMany('App\Comment', 'commentable');
    }
}

发布模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = [
        'user_id', 'topic', 'body', 'category',
    ];

    public function user()
    {
        return $this->belongsTo('App\User');
    }

    public function comments()
    {
        return $this->morphMany('App\Comment', 'commentable');
    }
}

评论控制器

<?php

namespace App\Http\Controllers;

use App\Comment;
use App\Post;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class CommentController extends Controller
{
    public function store(Request $request, $post)
    {
        $comment = new Comment;
        $comment->body = $request->body;
        $comment->user_id = Auth::user()->id;
        $post = Post::find($post);
        $post->comments()->save($comment);

        return back();
    }

    public function replyStore(Request $request, $comment)
    {
        $comment = new Comment;
        $comment->body = $request->body;
        $comment->user_id = Auth::user()->id;
        $comment = Comment::find($comment);
        $comment->comments()->save($comment);

        return back();
    }
}

路线

Route::post('/comment/store/{post}', 'CommentController@store')->name('comment.add');
Route::post('/reply/store/{commentid}', 'CommentController@replyStore')->name('reply.add');

查看

@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-12">
                @if ($errors->any())
                    <div class="alert alert-danger">
                        <ul>
                            @foreach ($errors->all() as $error)
                                <li>{{ $error }}</li>
                            @endforeach
                        </ul>
                    </div>
                @endif
                <div class="card">
                    <div class="card-header">{{$post->topic}}
                        <a href="/createPost" class="btn btn-secondary float-right">Create New Post</a>
                    </div>
                    <div class="card-body">
                        @if (session('status'))
                            <div class="alert alert-success" role="alert">
                                {{ session('status') }}
                            </div>
                        @endif
                        <h3>{{$post->topic}}</h3>
                        <p>{{$post->body}}</p>
                    </div>
                </div>
                <form action="/comment/store/{{$post->id}}" method="post" class="mt-3">
                    @csrf
                    <div class="form-group">
                        <label for="">Comment :</label>
                        <textarea class="form-control" name="body" id="" rows="3"></textarea>
                        <br>
                        <input type="submit" value="Comment" class="btn btn-secondary">
                    </div>
                </form>

                <div class="row mt-5">
                    <div class="col-md-10 mx-auto">
                        <h6 style="border-bottom:1px solid #ccc;">Recent Comments</h6>
                        @foreach($post->comments as $comment)
                            <div class="col-md-12 bg-white shadow mt-3" style="padding:10px; border-radius:5px;">
                                <h4>{{$comment->user->name}}</h4>
                                <p>{{$comment->body}}</p>
                                <button type="submit" class="btn btn-link" onclick="toggleReply({{$comment->id}})">
                                    Reply
                                </button>

                                <div class="row">
                                    <div class="col-md-11 ml-auto">
                                        {{-- @forelse ($replies as $repl)
                                        <p>{{$repl->body}}</p>
                                        @empty

                                        @endforelse --}}
                                    </div>
                                </div>
                            </div>

                            <form action="/reply/store/{{$comment->id}}" method="post"
                                  class="mt-3 reply-form-{{$comment->id}} reply d-none">
                                @csrf
                                <div class="form-group">
                                    <textarea class="form-control" name="body" id="" rows="3"></textarea>
                                    <br>
                                    <input type="submit" value="Reply" class="btn btn-secondary">
                                </div>
                            </form>
                        @endforeach
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection
@section('js')
    <script>
        function toggleReply(commentId) {
            $('.reply-form-' + commentId).toggleClass('d-none');
        }
    </script>
@endsection

我已经用parent_id创建了普通表,但是我不知道如何显示每个评论的回复。拜托,任何可以帮助我的人-我受困于此,第二个控制器函数的错误来自replystore(),该函数说它无法识别comments()方法。请帮我显示答复。

0 个答案:

没有答案