Я пытаюсь удалить комментарии из панели администратора. У меня есть функция удаления комментариев, но я не знаю, почему она не работает.
Вот мой контроллер:
$article = \DB::table("events")
->where("id", $id)
->select("id", "subject", "information", "public", "category_id", "event_type_id", "country", "address", "city", "starts", "ends", "organizer", "website", "email", "telephone")
->first();
$data['article'] = $article;
$event_comm = EventComment::where('event_id', $id)->get();
return view("admin.editEvent", $data)
->with(compact('event_comm'));
Моя функция удаления комментариев:
public function deleteComment($type, $id)
{
if ($type == "Event")
{
$comment = \App\EventComment::find($id);
}
if ($type == "Opinion")
{
$comment = \App\OpinionComment::find($id);
}
$comment->delete();
return redirect('admin/comments');
}
Маршрут для удаления комментария
Route::get('admin/article/deleteComment/{type?}/{id?}', 'ArticleController@deleteComment');
Моя кнопка
<button href = "{{ url('admin/article/deleteComment/'.$article['type'].'/'.$article['id']) }}" role = "button" class = "btn btn-xs btn-danger" onclick = "return confirm('Are you sure you want to delete this comment?');">Delete <i class = "fa fa-trash"></i></button>
{type?}/{id?} - Почему вопросительные знаки? Глядя на контроллер, оба аргумента должны быть обязательными.
так я должен удалить вопросительные знаки?
Вы также никогда не проверяете, действительно ли вы получили комментарий, прежде чем пытаться его удалить. Если кто-то передаст недопустимый тип или идентификатор, вы не получите комментарий в ответ. Выполните некоторую отладку, чтобы убедиться, что все значения соответствуют вашим ожиданиям и что $comment определено.
Знаки вопроса для аргументов необязательный. Поэтому, если вы посетите admin/article/deleteComment/, вы получите сообщение об ошибке, поскольку контроллер ожидает два аргумента, но не получит ни одного. Вот руководство по параметрам маршрута
да ты прав. У меня есть эта ошибка: `ErrorException в строке ArticleController.php 510: отсутствует аргумент 1 для App\Http\Controllers\ArticleController::deleteComment()`






Попробуй это
{!! Form::open(['method' => 'DELETE', 'route'=>['comments.destroy', $comment->id], 'style'=> 'display:inline', 'onsubmit' => 'return confirm("Are you sure you want to delete?")']) !!}
{!! Form::button('<i class = "fa fa-trash"></i>',['type'=>'submit', 'class'=> 'btn btn-danger']) !!}
{!! Form::close() !!}
Создайте такой маршрут
Route::delete('comments/{id}',['uses'=>'CommentsController@destroy', 'as' => 'comments.destroy']);
Хороший ответ включает объяснение того, почему OP должен «попробовать это». Что вы изменили и почему? Кроме того, глядя на код, ОП также нуждается в type-значении, чтобы знать, какой тип комментария нужно удалить.
Спасибо за ответ. Но на данный момент не работает, когда я нажимаю кнопку редактирования, мой модальный режим не открывается, чтобы увидеть мои поля для редактирования. Вот как должно быть: imgur.com/a/RxQKIT4
Вы должны попробовать это:
Пожалуйста, измените свой маршрут, как
Route::get('admin/article/deleteComment/{type}/{id}', 'ArticleController@deleteComment')->name('commentdelete');
Ваша кнопка нравится:
<button href = "{{ route('commentdelete',[$article['type'],$article['id']]) }}" role = "button" class = "btn btn-xs btn-danger" onclick = "return confirm('Are you sure you want to delete this comment?');">Delete <i class = "fa fa-trash"></i></button>
Спасибо за ваш ответ, сэр. Вы знаете, почему мой модальный модуль не открывается, когда я нажимаю кнопку редактирования? Без href = "{{ route('commentdelete',[$article['type'],$article['id']]) }}" он работает, но мне это нужно, как его правильно использовать? Я использую laravel 5.2
Да, это правильный метод для laravel, и вы можете использовать URL-адрес и имя маршрута в теге привязки.
Если мой ответ работает для вас, пожалуйста, примите и проголосуйте за мой ответ.
Подождите, пожалуйста, вы знаете, почему мое модальное окно сейчас не открыто? Вот код моего модального окна редактирования: <a article_type = "{{ $article['type'] }}" pop_up_id = "{{ $article['type'] }}_{{ $article['id'] }}" role = "button" class = "btn btn-xs btn-warning modify"> <i class = "fa fa-pencil-square-o"></i> </a> <div class = "modal" id = "myModal_{{ $article['type'] }}_{{ $article['id'] }}" tabindex = "-1" role = "dialog" aria-labelledby = "myModalLabel" aria-hidden = "true" style = "display: none;">
Потому что, когда вы делаете какой-либо маршрут в модальном href, тогда, когда вы нажимаете кнопку в этот раз, они перенаправляют на маршрут, поэтому, пожалуйста, когда вы используете href для модального всплывающего окна, просто напишите href = "#"
Давайте продолжить обсуждение в чате.
вы передаете идентификатор комментария ..? или идентификатор события?