метод laravel в href link?

Я хочу создать выпадающий список с двумя ссылками. «Удалить» и ссылку «Изменить».

Для функции delete я создал форму.

{!! Former::horizontal_open()->method('DELETE')->action(action("Test\\TestController@destroythread", $comment->id)) !!} {!! Former::danger_submit('Delete') !!} {!! Former::close() !!} 

Форма работает, это означает, что мой комментарий будет удален, если я нажму кнопку.

Нет. Я решил удалить кнопку удаления и создать раскрывающийся список со ссылкой на удаление. Поэтому мне нужно получить логику этой формы в моем выпадающем меню.

Но я не получил это в раскрывающемся списке. Оптическая кнопка «Удалить» – это часть раскрывающегося списка:

 <li><a href="#"> Delete </a></li> 

Но я не могу просто поместить свою функцию контроллера в эту «href-link», потому что без «DELETE-Method» это не сработает. Надеюсь, вы все понимаете, что я пытаюсь сказать … мой английский не самый лучший.

Может ли кто-нибудь помочь мне с этим?

Спасибо за любую помощь!

Я пробовал это так, но это не сработало:

 <li> <a> {!! Former::horizontal_open()->method('DELETE')->action(action("Test\\TestController@destroythread", $comment->id)) !!} Delete {!! Former::close() !!} </a> </li> 

моя попытка привязки непосредственно к маршруту:

 <li><a href="{{ route('destroy', $comment->id) }}">Delete</a></li> 

и мой маршрут выглядит следующим образом:

 Route::delete('/show/{id}', 'Test\\TestController@destroythread')->name('destroythread'); 

но это не сработало для меня ..

все / показать / маршруты:

 Route::get('/show/{id}', 'Test\\TestController@show'); Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\TestController@update']); Route::get('/show/{id}/edit', 'Test\\TestController@edit')->name('edit'); Route::delete('/show/{id}', 'Test\\TestController@destroy')->name('destroy'); Route::delete('/show/{id}', 'Test\\TestController@destroythread')->name('destroythread'); // this is the route we are talking about 

Laravel использует метод spoofing для выполнения запросов «DELETE», «PUT», «PATCH». Как упоминал @Jilson Thomas, вы можете просто создать ссылку непосредственно на маршрут. Я подозреваю, что вы используете находчивые маршруты, поэтому вы пытаетесь отправить запрос DELETE?

Взгляните на этот раздел в документах маршрутизации, это может помочь вам: https://laravel.com/docs/master/controllers#restful-supplementing-resource-controllers

Основываясь на ваших маршрутах, я считаю, что следующие два маршрута совпадают, прежде чем они доберутся до нужного вам маршрута.

 Route::put('/show/{id}/edit', ['as' => 'editing', 'uses' => 'Test\\TestController@update']); Route::delete('/show/{id}', 'Test\\TestController@destroy')->name('destroy'); 

Попробуйте переместить нужный маршрут над ними и посмотреть, что произойдет.

редактировать

 <li><a href="{{ route('destroy', $comment->id) }}">Delete</a></li> 

Это создаст запрос GET, поэтому он не будет соответствовать Route :: delete (…). Предыдущий метод отправлял форму на маршрут. Кроме того, обертка всей формы в теге привязки является недопустимой разметкой.

Итак, согласно обсуждению в комментариях, вам нужно будет использовать запрос ajax для запроса на delete из тега привязки.

 $.ajax({ url: '/show/'+$('#testId').attr('value'), type: 'DELETE', success: function(data){ if(data.success) alert('Deleted'); }, error: function() {} }); 

и на вашем маршруте:

 Route::delete('/show/{id}', ['as'=>'destroy', 'uses'=>'Test\\TestController@destroy']); 

HTML

 <li><a href="#" id="testId" value="{{$comment->id}}">Delete</a></li> 

Альтернативный способ, попробуйте «Помощник Habler Laravel Collective ».

HTML

 {!! Form::open('delete', 'method' => 'delete, 'route' => ['show.destroy', $comment->id] ) !!} {!! Form::submit('Submit') !!} {!! Form::close() !!} 

routes.php

 Route::delete('show/{show}', [ 'uses' => 'TestController@destroy', 'as' => 'show.destroy' ]);