Zend Экспрессивна предлагает следующее: адаптеры для Aura.Router, FastRoute и Зенд-маршрутизатор и MVC маршрут может соответствовать методу, и путь легко:Имя хоста маршрутизации в Zend Выразительные
<?php
$app->get('/foo', $middleware);
С zend-mvc Router компонент можно соответствует имени хоста:
<?php
use Zend\Mvc\Router\Http\Hostname;
$route = Hostname::factory([
'route' => ':subdomain.example.com/foo',
'constraints' => [
'subdomain' => 'api',
],
]);
$router->addRoute('foo', $route);
Это также возможно с Symfony Routing Component:
<?php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$route = new Route(
'/foo', // path
array('_controller' => 'SomeController'), // default values
array('subdomain' => 'api'), // requirements
array(), // options
'{subdomain}.example.com', // host
array(), // schemes
array() // methods
);
$routes = new RouteCollection();
$routes->add('foo', $route);
Итак, я хотел бы быть в состоянии сделать что-то подобное с Экспрессивна и направить запрос на другой промежуточный слой в зависимости от подобласти:
// dispatch the requiest to ApiMiddleware
$app->get(':subdomain.example.com/foo', $ApiMiddleware, ['subdomain' => 'api']);
// dispatch the requiest to WebMiddleware
$app->get(':subdomain.example.com/foo', $WebMiddleware, ['subdomain' => 'www']);
Заранее спасибо!
Я не думаю, что любой из маршрутизаторов поддерживает это. Что вы можете сделать, это написать собственный мост для компонента Symfony Router. У этого есть некоторые приятные особенности, которые другие отсутствуют. – xtreamwayz
Существует [PR] (https://github.com/zendframework/zend-expressive/pull/370]) для маршрутизации имени хоста – venca