Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.11.2018 10:04:43

Как создать форму с кнопкой для удаления записи? (с роутом resource)

Контроллер

$router->resource('sessions', SessionController::class);

Форма. $name_route_remove2 - sessions.destroy

<form method="destroy" action= {{ route($name_route_remove2,['id'=>$entity->id]) }}>
@csrf
<button class="btn btn-danger removeEntity entityButton">Удалить</button></form>

Сгенерированная форма

<form method="delete" action="http://kasperskycms/admin/sessions/10">
<input type="hidden" name="_token" value="WSgrwgTDJ4z3QDnqSetKPwbKYi9vYNhw5nqbUI9j">                                    <button class="btn btn-danger removeEntity entityButton">Удалить</button>
</form>

При отправке формы я попадаю на страницу просмотра записи(view), удаление не происходит.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#2 12.11.2018 23:01:13

Re: Как создать форму с кнопкой для удаления записи? (с роутом resource)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#3 19.11.2018 10:38:16

Re: Как создать форму с кнопкой для удаления записи? (с роутом resource)

Воообще если вы в админке (то есть у вас защищена та страница с которой вы всё удаляете) проще всего гетом убрать
Роут:

Rouget::get('url/admin..../delete/{id}', 'AdminController@deleteid');

Контроллер:

public function deleteid($id){
$delete = Post::find($id);
$delete->delete();
Session::flash('message', 'Запись '.$id.' - успешно удалена!');
return redirect('url/admin..../');
}

Вьювер

@if (Session::has('message'))
            <div class="alert alert-info">{{ Session::get('message') }}</div>
        @endif
<ul>
@if(isset($posts))
@foreach($posts as $post)
<li>$post->title - <a href="{{url('/url/admin..../delete').'/'.$post->id}}">Удалить</a></li>
@endforeach
@endif
</ul>

пс. написал как пример, естественно нужно всё делать в форме и т.д., но если на эту страницу может зайти только админа например, можно удалять таким методом, п.с. незабудьте сделать какую нить подтверждалку, типо, да конечно - удалить)

Не в сети

#4 24.11.2018 14:40:42

Re: Как создать форму с кнопкой для удаления записи? (с роутом resource)

Parasolka, спасибо, но так неправильно.
Нужно просто в форму с post помимо ключа csrf_token добавить method_field('DELETE') и всё, также с update. В общем, всё по статье, которую я скинулю


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#5 26.11.2018 13:34:35

Re: Как создать форму с кнопкой для удаления записи? (с роутом resource)

црф токен потом вы делаете для того чтобы кроме вас никто не учудил, если у вас роуты админки защищены и требуют авторизации, то можно и без токена гетом передавать, ничего тут правильного или не правильного нет, это просто удобство, а ещё вы можете фронт подключить и аяксом всю дич удалять, и получать ответ - что всё гуд) тут нету правил, если дыр нету, правильно или нет

Не в сети

#6 26.11.2018 19:32:33

Re: Как создать форму с кнопкой для удаления записи? (с роутом resource)

Первая дыра - у гет длинна передаваемой строки ограничена в отличии от post. Вторая дыра - у генерируемых resources экшенов show, update и delete одинаковые url и без указания method_field() будет переход к show(и нельзя просто указать метод в атрибуте формы, там должен быть post, иначе работать не будет).

Изменено Kirir (26.11.2018 19:33:23)


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

Подвал раздела