Динамический маршрутизатор Symfony CMF «не удалось сопоставить» бревна

У меня есть приложение Symfony 2.6, использующее пакет маршрутизации Symfony CMF 1.3, в котором мы используем комбинацию обычных маршрутов Symfony и динамических маршрутов для пользовательских хранилищ (среди прочего, приведенный ниже пример фокусируется на одном из наших динамических маршрутизаторов).

Проблема в том, что мы получаем бесконечные журналы о том, что маршрутизатор не может соответствовать динамическим маршрутам, когда они работают нормально.

Наиболее распространенная запись:

Router Symfony\Bundle\FrameworkBundle\Routing\Router was not able to match, message ""

Мы иногда видим

Router Symfony\Cmf\Bundle\RoutingBundle\Routing\DynamicRouter was not able to match, message ""

Есть ли способ отключить эти журналы или изменить мою динамическую конфигурацию / настройку маршрутизатора так, чтобы эти ошибки появлялись только в том случае, если маршрут действительно не срабатывает.

Вот мой конфиг / настройка:

# app/config/config.yml

cmf_routing:
chain:
routers_by_id:
router.default:             32
cmf_routing.dynamic_router: 30
dynamic:
enabled:                      true
route_provider_service_id:    store_router

И фактический динамический маршрутизатор на основе

// StoreBundle/Router/StoreRouter.php

<?php

/**
* @DI\Service("store_router")
*/
class StoreRouter implements RouteProviderInterface
{
protected $em;

/**
* @DI\InjectParams({
*      "em" = @DI\Inject("doctrine.orm.entity_manager")
* })
*/
public function __construct(EntityManager $em)
{
$this->em = $em;
}

/**
* @param Request $request
* @return RouteCollection
*/
public function getRouteCollectionForRequest(Request $request)
{
$collection = new RouteCollection();

$store = $this->em->getRepository('StoreBundle:Store')->findOneBySlug(substr($request->getPathInfo(), 1), $request->get('key', null));

// no store found, return an empty collection
if (empty($store)) {
return $collection;
}

$route = new Route(
'/' . $store->getSlug(),
[
'_controller' => 'StoreBundle:Store:view',
'slug' => $stote->getSlug()
]
);

$collection->add($store->getSlug(), $route);

return $collection;
}

public function getRouteByName($name, $params = [])
{
}

public function getRoutesByNames($names)
{
}
}

Если есть лучший способ использовать динамические маршруты, я хотел бы услышать это 🙂

1

Решение

Записи журнала создаются на уровне «отладка». Вы можете установить минимальный уровень вашего регистратора выше. Если вам нужны журналы отладки для других целей, вы можете написать CompilerPass, который удаляет аргумент logger в службе symfony_cmf.router.

Я согласен с тем, что имеет смысл настроить уровень журнала с false возможность полностью отключить ведение журнала. Если вы хотите этого, я с радостью рассмотрю и объединю запрос на извлечение компонента Routing для кода и RoutingBundle для предоставления конфигурации.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]