Отсутствуют обязательные параметры для [Route: form.comments.destroy] [URI: form / {form} / comments / {comment}] (Laravel 5.6) - PullRequest
0 голосов
/ 04 декабря 2018

Я пытался реализовать очень простой метод уничтожения для комментариев в форме, но мне не хватает чего-то, на что я никак не могу повлиять.При попытке запустить страницу просмотра я получаю сообщение об ошибке:

ErrorException (E_ERROR)
Missing required parameters for [Route: form.comments.destroy] 
[URI: form/{form}/comments/{comment}]. 
(View: C:\distributor\resources\views\form\view.blade.php)

Мой файл маршрутов настроен так, как показано:

......
Route::resource('forms', 'FormController');
Route::get('/formSearch', ['as' => 'search', 'uses' => 'FormController@formSearch']);

Route::resource('form.comments', 'CommentsController');

Файл вида, в котором отображаются комментарии (и метод пытается вызвать его) устанавливается как:

<div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">Comments</h4>
    </div>
    <div class="panel-collapse" id="comments" data-context="5" aria-expanded="false">
      <div class="panel-body">
        @forelse ($form->comments as $comment)
          <div class="form-group">
            Comment By: <strong>{{ $comment->user_name }}</strong> at <strong>{{ $comment->created_at }}</strong>
          </div>
          <div class="form-group col-md-10">
            <div class="form-control" readonly>{{ $comment->comment }}</div>
          </div>
          <div class="btn-group col-md-2">
            <form action="{{ route('form.comments.destroy', $comment->id) }}" method="POST">
              {{ csrf_field() }}
              {{ method_field('DELETE') }}
              <button class="btn btn-danger" type="submit" data-confirm="Are you sure you want to delete this comment?" value="delete">
                <i class="fa fa-trash"></i>&nbsp;Delete
              </button>
            </form>
          </div>
        @empty
          <div class="form-group">
            <div class="form-control" readonly>No Comments Found</div>
          </div>
        @endforelse
        <div class="form-group">
          <label class="control-label">
            <a href="#">Back To Top</a>
          </label>
        </div>
      </div>
    </div>
  </div>

Наконец, в контроллере метод устанавливается как:

public function destroy($id){
$comment = Comment::find($id);
$comment->delete();

// Redirect
return redirect()->back()->with('status', 'Comment successfully deleted');
}

Есть идеи?

1 Ответ

0 голосов
/ 04 декабря 2018

Я бы порекомендовал переименовать ваш form.comments маршрут в comments, потому что у вас есть путь form/{form}/comments/{comment}, поэтому для него требуется 2 параметра.form и comment.Вы отправляете только 1 ($comment->id)

// Route::resource('form.comments', 'CommentsController');
Route::resource('comments', 'CommentsController');


<form action="{{ route('comments.destroy', $comment->id) }}" method="POST">...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...