Задать вопрос
@TANK_IST

Как инициализировать symfony routing без использования symfony?

На своем проекте решил использовать компонент symfony routing.
Создал конфиг routing.yaml, но теперь не знаю как его инициализировать.
Поиск в гугле ничего не дал.
Помогите. Спасибо.
  • Вопрос задан
  • 1335 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@TANK_IST Автор вопроса
<?php

use Symfony\Component\Config\FileLocator;
use Symfony\Component\Routing\Loader\YamlFileLoader;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Exception\ResourceNotFoundException;
use Symfony\Component\HttpKernel;

$locator = new FileLocator(array(__DIR__));
$loader = new YamlFileLoader($locator);
$routes = $loader->load('route.yml');

$context = new RequestContext();
$request = Request::createFromGlobals();
$context->fromRequest($request);
$matcher = new UrlMatcher($routes, $context);
$controllerResolver = new HttpKernel\Controller\ControllerResolver();
$argumentResolver = new HttpKernel\Controller\ArgumentResolver();

try {
    $matcher = $matcher->match($request->getPathInfo());
    $matcher['_controller'] .= 'Action';
    $request->attributes->add($matcher);

    $controller = $controllerResolver->getController($request);
    $arguments = $argumentResolver->getArguments($request, $controller);

    call_user_func_array($controller, $arguments);
} catch (ResourceNotFoundException $e) {
    $response = new Response('Not found!', Response::HTTP_NOT_FOUND);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
padlyuck
@padlyuck
https://www.sitepoint.com/build-php-framework-symf... когда не гуглится - задавайте вопрос на английском. Не знаю как по качество, но мануал разжёвывает процесс использования роутинга эволюционируя его от простого switch-case'а до использования симфонийского компонента
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы