Вполне рабочая схема получается, если использовать
Doctrine Behavior Tree для реализации вложенности, и
Symfony CMF Dynamic Router для маршрутизации по этой структуре.
Грубо говоря, нужно реализовать некий сервис:
namespace AppBundle\Router;
use Symfony\Cmf\Bundle\RoutingBundle\Doctrine\DoctrineProvider;
use Symfony\Cmf\Component\Routing\RouteProviderInterface;
class RouterProvider extends DoctrineProvider implements RouteProviderInterface
{
// ...
}
который будет подключен в ChainRouter наряду с системным машрутизатором, и будет загружать из базы страницы, на основе иерархии которых строить и резолвить маршруты.