1 Вопрос: Показать результаты запроса в другом блейде

вопрос создан в Wed, May 8, 2019 12:00 AM

Первоначально я пытался показать результаты в модальном режиме, но изменил его, чтобы показать результат в другом блейде. Я хочу получить все комментарии к сообщению, используя его post_id. Но я получаю следующую ошибку: Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: POST.

Клинок, откуда я получаю свой post_id после нажатия на Все комментарии:

<section class="row posts">
        <div class="col-md-6 col-md-3-offset">
            <header><h3>other posts</h3></header>
            @foreach($posts as $post)
            <article class="post">
                <p>{{ $post->content }}</p>
                <div class="info">Posted by {{ $post->user->username }} on {{ $post->created_at }}</div>
                <div class="interaction">
                    <a href="#" class="like" id="like" data-postid="{{ $post->id }}">{{ Auth::user()->likes()->where('post_id', $post->id)->first() ? 'Liked' : 'Like' }}</a> |
                    <a href="#" class="comment" id="comment" data-postid="{{ $post->id }}">Comment</a> |
                    <a href="{{ route('show.comments',['post_id' => $post->id]) }}" class="allcomments" id="allcomments" data-postid="{{ $post->id }}">All Comments</a>
                    @if(Auth::user() == $post->user)
                        |
                        <a href="#" class="edit" data-postid="{{ $post->id }}">Edit</a> |
                        <a href="{{ route('post.delete',['post_id' => $post->id]) }}">Delete</a>
                    @endif
                </div>
            </article>
            @endforeach
        </div>
    </section>

Маршрут:

Route::middleware(['web'])->group(function()
{
Route::post('/showcomment/{post_id}',[
        'uses' => 'CommentController@getComments',
        'as' => 'show.comments',
        'middleware' => 'auth'
    ]);
}

Контроллер:

public function getComment($post_id)
    {
        $comments = Comment::where('post_id',$post_id)->orderBy('created_at','desc')->get();
        return view('showcomments',['comments' => $comments]);
    }

Блейд, на котором я хочу вывести результат:

@extends('layouts.master')

@section('content')
    <section class="row posts">
        <div class="col-md-6 col-md-3-offset">
            <header><h3>other Comments</h3></header>
            @foreach($comments as $comment)
                <article class="comment">
                    <p>{{ $comment->body }}</p>
                    <div class="info">Made by {{ $comment->user->username }} on {{ $comment->created_at }}</div>
                    <div class="interaction">
                        @if(Auth::user() == $comment->user)
                            |
                            <a href="#" class="edit" data-commentid="{{ $comment->id }}">Edit</a> |
                            <!--copy delete from post here including the modal-->
                        @endif
                    </div>
                </article>
            @endforeach
        </div>
    </section>
@endsection
    
0
  1. вы можете сделать dd($comments), чтобы узнать, получаете ли вы данные?
    2019-05-08 16: 06: 46Z
  2. Для вашего просмотра попробуйте return View::make('commentboard')->with('comments', $comments);, а для вашего маршрута: Route::get('/commentboard', 'CommentController@getComment')->name('commentboard');
    2019-05-08 16: 09: 05Z
  3. @ AmartyaBarua, вы можете передать postid из вашего представления в ваш контроллер, используя параметр маршрута.
    2019-05-08 17: 41: 39Z
  4. @ AmartyaBarua это работает сейчас?
    2019-05-08 19: 31: 44Z
  5. Из того, что я получаю, получение действительно не поддерживается, так как, как говорится в сообщении об ошибке, ваш маршрут отправляет запрос на публикацию
    2019-05-08 19: 44: 28Z
1 ответ                              1                         

По сути, это был бы мой подход:

Route::get("/posts/{post_id}/comments", "PostsController@getComments");

Контроллер:

// get comments...
public function getComments ($postId) {
    $comments = Post::findOrFail($postId)->comments;

   return view('showcomments',['comments' => $comments];
}

Чтобы вышесказанное сработало: вы должны были уже определить отношение комментариев к комментариям в этом случае в модели записей:

// Post Model: a post has many comments

public function comments () {
   return $this->hasMany(Comments::class, 'post_id');
}
    
0
2019-05-08 19: 50: 37Z
источник размещен Вот