Глобальные ограничения параметров в Laravel
Можно сделать так, чтобы параметр с определенным
именем всегда имел заданное ограничение в любых
маршрутах. Это нужно прописывать в методе
boot класса AppServiceProvider.
Давайте для примера зададим глобальное ограничение
для параметра с именем id:
<?php
namespace App\Providers;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function boot(): void
{
Route::pattern('id', '[0-9]+');
}
}
?>
Теперь любой маршрут, у которого есть параметр
id, выполнится только если id будет числом:
<?php
Route::get('/post/{id}', function ($id) {
return '!!!'; // only if numeric
});
?>
Наложите глобальное ограничение
на параметр slug. Пусть
он может содержать буквы и цифры,
а также дефис и подчеркивание.
Наложите глобальное ограничение
на параметр id - только цифры.
Проверьте маршрут /user/:id
с числом и со строкой.