Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Выпадающий список с запросом "Удалить" в Laravel?

Автор вопроса: ItzMe488Ответов: 1

Я уже спрашивал что-то подобное, но не получил ничего, что помогло бы мне. Так что прошу прощения за повторный вопрос..

Сначала я создал форму с кнопкой отправки, которая направляет меня к моему маршруту удаления. В форме был метод "УДАЛИТЬ".

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

Это сработало идеально. Это означает, что моя функция контроллера, маршруты и форма не имеют ошибок.

Теперь я решил, что хочу раскрывающийся список. В выпадающем списке должно быть написано: удалить и редактировать. Сосредоточимся на удалении.

Выпадающие ссылки выглядят так:

<ul class="dropdown-menu">
<li><a href="#">Edit</a></li>
<li><a href="#">Delete</a></li></ul> // <- Delete

Конечно, я не могу поместить свою форму Laravel в этот тег <li>. Вот почему я попытался сделать ссылку, которая направляет меня на мой маршрут удаления laravel.

Как это:

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

но это не сработало, потому что это дает мне запрос "GET", а не "DELETE".

Ну, теперь я застрял. Мне очень жаль, что я спрашиваю это снова..

Я надеюсь, что кто-то может мне помочь.

Мой маршрут удаления laravel таков:

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

и моя функция контроллера такова:

public function destroythread($id) {
    $comment = Comment::query()->findOrFail($id);
    $comment->delete();
    return redirect()->back();
}

Мой последний вопрос об этой проблеме не мог мне помочь. Пользователь сказал, что я могу использовать ajax, но я не очень понимаю, как это работает, и мне это совсем не нравится.

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

Отредактируйте ответ @Joost:

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

сработало, но теперь в моем раскрывающемся списке есть настоящая кнопка ... это выглядит не очень хорошо. Есть ли способ, что там просто будет стоять: Удалить ?

  • Да, это мой вчерашний вопрос о той же проблеме. Я только слышал, что могу использовать ajax, но я никогда не использовал его и не совсем понимаю. ItzMe488 16.03.2016
  • Вы просто заключаете ссылку в форму и превращаете ее в кнопку. Вы не можете использовать href или ссылку для отправки чего-либо, кроме запроса GET. Как и в @Epodax его ссылка. Joost 16.03.2016
  • не могли бы вы показать мне, как это выглядит? Потому что я пробовал это так, но не понял правильно. Может быть, мой синтаксис был неправильным. ItzMe488 16.03.2016
  • Я обновил свой вопрос тем, как я попробовал его с вашим ответом. Это сработало, но теперь в моем раскрывающемся списке есть кнопка, и это, конечно, выглядит не очень хорошо. ItzMe488 16.03.2016
  • @ ItzMe488 ItzMe488 Тогда просто удалите его стиль с помощью css и настройте его в соответствии со своими потребностями. Joost 16.03.2016

phpdrop-down-menularavelblade

Ответы

Ответ 1 · рейтинг -1 · Alexey Mezenin

Вы говорите, что ваша форма работает. Таким образом, вы можете просто использовать ссылку вместо кнопки и простой JS, например:

<a href="#" onclick="document.yourFormName.submit(); return false;">

Или вы можете попробовать:

<a href="#" onclick="parentNode.submit(); return false;">

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы