У меня есть приложение 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)
{
}
}
Если есть лучший способ использовать динамические маршруты, я хотел бы услышать это 🙂
Записи журнала создаются на уровне «отладка». Вы можете установить минимальный уровень вашего регистратора выше. Если вам нужны журналы отладки для других целей, вы можете написать CompilerPass, который удаляет аргумент logger в службе symfony_cmf.router.
Я согласен с тем, что имеет смысл настроить уровень журнала с false
возможность полностью отключить ведение журнала. Если вы хотите этого, я с радостью рассмотрю и объединю запрос на извлечение компонента Routing для кода и RoutingBundle для предоставления конфигурации.
Других решений пока нет …