Не могу показать мой ответ под комментарием Laravel 5.7 - PullRequest
0 голосов
/ 12 октября 2018

Я не могу отобразить свой ответ под каждым комментарием.Вот мой код ...

Комментарий модели

<?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().Пожалуйста, помогите мне, чтобы отобразить ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...