Laravel – гайд по выживанию - страница 5

Шрифт
Интервал


DELETE: удаление сущности (Delete).


Эта техника также называется CRUD (Create, Read, Update, Delete).


Чаще всего мы будем использовать метод GET, но есть также маршрут, который можно использовать для получения любого метода:



Route::any('/zombie', function () {

echo "Any request from this zombie route";

});


Отлично!


Итак, как мы инициируем наши маршруты из браузера? В большинстве случаев мы используем GET-запрос. Введя site.com/zombie, мы получаем функцию GET. Но как насчет передачи данных?


Легко! Для этого подойдет HTML-форма, подобная этой:


@csrf

@method('PATCH')


При нажатии кнопки submit на этой форме данные будут отправлены на POST-маршрут site.com/zombie.


Обратите внимание на передачу @csrf и дополнительного указания метода. Указание метода необходимо из-за того, что в HTTP не существует метода ‘PATCH’. Таким образом мы даем понять Laravel, какое именно действие нужно совершить с данными из этой формы.


Пример быстрой маршрутизации

Представьте, что перед вами стоит задача убить (удалить) зомби-изгоя! Сначала необходимо создать форму:


@csrf

@method(DELETE)


На ней отображается кнопка "Уничтожить". Для простоты мы жестко задали идентификатор 2, который, как правило, зависит от конкретного зомби.


Далее, давайте составим маршрут:


use Illuminate\Http\Request; Route::delete('/zombie', function(Request $request){

$id = $request->id; Zombie::destroy($id);

});


И вот уже нет проблемного зомби с идентификатором 2! Обратите внимание на включение класса Request из Laravel, который перехватывает данные запроса. Вам придется не забыть объявить пространство имен, когда вы захотите использовать объект запроса.


Внимание! Этот пример пока не будет полностью рабочим, так как наша база данных и модели еще находятся в процессе создания. Мы займемся этим в ближайшее время.


Мы использовали закрытие маршрутов. Далее обсудим разницу между закрытием маршрутов и контроллерами маршрутов.

Закрытие маршрута и действия контроллера маршрута

Закрытие маршрута – это непосредственная функция, содержащая код, как показано здесь:


Route::get('/zombie', function(){

echo 'Greetings from the Zombie Page!';