Метод domain
Метод domain применяется к экземпляру маршрута
или группы маршрутов и позволяет задать поддомен, для
которого будут доступны эти маршруты. Первым и единственным
параметром передаётся строка с именем поддомена, в которой
можно указывать динамические сегменты с помощью фигурных
скобок. Эти сегменты затем передаются в замыкание или
контроллер как параметры.
Синтаксис
<?php
Route::domain($domainName, $callback);
?>
Пример
Давайте создадим маршрут, который будет доступен только
для поддомена admin.example.com:
<?php
use Illuminate\Support\Facades\Route;
Route::domain('admin.example.com', function () {
Route::get('/', function () {
echo "Welcome to admin panel";
});
});
?>
Результат выполнения кода при переходе на admin.example.com:
"Welcome to admin panel"
Пример
Создадим маршрут с динамическим параметром в поддомене, который будет передаваться в замыкание:
<?php
use Illuminate\Support\Facades\Route;
Route::domain('{username}.example.com', function () {
Route::get('/profile', function ($username) {
echo "Profile of user: " . $username;
});
});
?>
Результат выполнения кода при переходе на john.example.com/profile:
"Profile of user: john"
Пример
Давайте совместим динамический поддомен с параметрами из URL-адреса. В этом случае параметры передаются в замыкание в порядке их объявления:
<?php
use Illuminate\Support\Facades\Route;
Route::domain('{city}.example.com', function () {
Route::get('/news/{id}', function ($city, $id) {
echo "News " . $id . " from " . $city;
});
});
?>
Результат выполнения кода при переходе на moscow.example.com/news/5:
"News 5 from moscow"
Пример
Метод domain также можно применять к группе
маршрутов с помощью метода group:
<?php
use Illuminate\Support\Facades\Route;
Route::group(['domain' => 'api.example.com'], function () {
Route::get('/users', function () {
echo "List of users";
});
Route::get('/users/{id}', function ($id) {
echo "User with id: " . $id;
});
});
?>
Результат выполнения кода при переходе на api.example.com/users/3:
"User with id: 3"
Пример
Использование метода domain с контроллером.
Динамический сегмент поддомена передаётся в метод
контроллера как аргумент:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function show($username)
{
return "Profile of user: " . $username;
}
}
?>
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
Route::domain('{username}.example.com', function () {
Route::get('/profile', [UserController::class, 'show']);
});
?>
Результат выполнения кода при переходе на jane.example.com/profile:
"Profile of user: jane"
Смотрите также
-
метод
group,
который группирует маршруты -
метод
prefix,
который задаёт префикс для группы маршрутов -
метод
where,
который ограничивает параметры маршрута регулярным выражением -
метод
middleware,
который подключает посредников для маршрута