Позвольте мне кое-что прояснить.Аура. Маршрутизатор не занимается диспетчеризацией.Это только соответствует маршруту.Он не управляет обработкой ваших маршрутов.
См. Полный рабочий пример (В этом примере обработчик считается вызываемым)
$callable = $route->handler;
$response = $callable($request);
В вашемВ случае, если вы совпали с запросом (см. соответствующий запрос )
$matcher = $routerContainer->getMatcher();
$route = $matcher->match($request);
, вы получите маршрут, теперь вам нужно написать соответствующие способы обработки значений из $route->handler
.
Это то, что я сделал после var_dump $route->handler
для маршрута /signin
.
array (size=1)
'params' =>
array (size=1)
'values' =>
array (size=2)
'controller' => string '\Infraweb\LoginUI' (length=17)
'action' => string 'read' (length=4)
Полный код опробован ниже.Как я упоминал ранее, я не знаю вашей логики обработки маршрута.Так что это зависит от вас, чтобы написать вещи правильно.
<?php
require __DIR__ . '/vendor/autoload.php';
use Aura\Router\RouterContainer;
$routerContainer = new RouterContainer();
$map = $routerContainer->getMap();
$request = Zend\Diactoros\ServerRequestFactory::fromGlobals(
$_SERVER,
$_GET,
$_POST,
$_COOKIE,
$_FILES
);
$map->get('application.signin.read', '/signin', [
'params' => [
'values' => [
'controller' => '\Infraweb\LoginUI',
'action' => 'read',
]
]
]);
$map->post('login.read', '/services/authentication/login', [
'params' => [
'values' => [
'controller' => '\Infraweb\Toolkit\Services\Authentication',
'action' => 'login',
]
]
])->accepts([
'application/json',
]);
$matcher = $routerContainer->getMatcher();
// .. and try to match the request to a route.
$route = $matcher->match($request);
if (! $route) {
echo "No route found for the request.";
exit;
}
echo '<pre>';
var_dump($route->handler);
exit;
Для записи, это composer.json
{"require": {"aura / router": "^3.1 "," zendframework / zend-diactoros ":" ^ 2.1 "}}
и работает через
php -S localhost:8000 index.php
и просматривает http://localhost:8000/signin