Метод delete
Метод delete класса Route используется для регистрации маршрута, который обрабатывает HTTP DELETE запросы. Обычно такие маршруты предназначены для удаления ресурсов. Первым параметром передаётся URI маршрута, вторым - действие, которое будет выполнено при обращении по этому маршруту. Второй параметр может быть именем контроллера и метода через @, замыканием или массивом с указанием контроллера.
Синтаксис
<?php
use Illuminate\Support\Facades\Route;
Route::delete($uri, $action);
?>
Пример
Давайте зарегистрируем простой маршрут для удаления статьи по её идентификатору:
<?php
use Illuminate\Support\Facades\Route;
Route::delete('/articles/{id}', function ($id) {
return "Article with id $id has been deleted.";
});
?>
Результат выполнения DELETE запроса на /articles/5:
"Article with id 5 has been deleted."
Пример
Теперь зарегистрируем маршрут, который будет использовать метод контроллера для удаления:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
Route::delete('/articles/{id}', [ArticleController::class, 'destroy']);
?>
Пример
Создадим контроллер с методом destroy для обработки DELETE запроса:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function destroy(Request $request, $id)
{
$article = Article::find($id);
if ($article) {
$article->delete();
return response()->json(['message' => 'Article deleted successfully']);
}
return response()->json(['message' => 'Article not found'], 404);
}
}
?>
Результат выполнения DELETE запроса на /articles/5:
{
"message": "Article deleted successfully"
}
Пример
Также можно использовать группу маршрутов с префиксом для объединения DELETE маршрутов:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ArticleController;
Route::prefix('admin')->group(function () {
Route::delete('/articles/{id}', [ArticleController::class, 'destroy'])->name('articles.destroy');
Route::delete('/comments/{id}', [CommentController::class, 'destroy'])->name('comments.destroy');
});
?>