Решал двумя способами:
1. RoutableInterface с методами getRouteName и getRouteParameters. Для твига написал свою обертку над path, которая использовала эти методы
{{ object_path(entity) }}
2. Свой генератор роутов с примерно таким кодом:
$compiledRoute = $route->compile();
$variables = $compiledRoute->getVariables();
$parameters = array();
if (!empty($variables)) {
foreach ($variables as $variable) {
$parameters[$variable] = $this->getObjectProperty($object, $variable);
}
}
return $this->router->generate($name, $parameters);
В итоге использую как
{{ object_path('route_name', entity) }}
Все необходимые параметры возьмутся из модели. Удобно для CRUD