我目前正在为最近开始的一个项目研究Symfony CMF和PHPCR。我目前试图弄清楚的是如何创建Route
并将其保存到数据库中。据我所知,我必须使用Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route
并将元素保存到数据库中。这工作正常,但会自动生成一个路径路径,这不是我想要的。我需要做的是生成一个链接到特定控制器的自定义路由。这里是我的代码:如何在Symfony RoutingBundle(PHPCR)中创建具有自定义路径的路由?
$em = $this->get('doctrine_phpcr.odm.document_manager');
$parent = $em->find(null, '/cms/routes');
$route = new \Symfony\Cmf\Bundle\RoutingBundle\Doctrine\Phpcr\Route();
$route->setParentDocument($parent);
$route->setName('my_route_name');
$route->setDefault('_controller', 'AppBaseBundle:Frontend/Users:index');
$em->persist($route);
$em->flush();
如果我执行这个代码,生成的路线将/cms/routes/my_route_name
。从我所看到的,您可以使用$route->setPath('/testing');
,但会产生以下异常:
无法确定前缀。这是一个新的未加载的文档,或者调用setPrefix的侦听器没有正确设置。
有没有人有任何想法如何解决这个问题?
新增文档请求https://github.com/symfony-cmf/symfony-cmf-docs/issues/704 – dbu
感谢您抽出时间来回答!在深入了解'RoutingBundle'和'RoutingAutoBundle'的源头之后,我设法更好地理解了事情的工作方式。我仍然需要使用我的解决方法,因为页面标题主要是西里尔语和波斯语。这就是为什么我保存一个名为'normalizedUrl'的额外字段,用户可以手动音译英文标题,并且可以自定义网址(即'Тестовастраница'变成'/ bg/testova-stranica')。 – tftd
当您创建路线文件时,您只需指定路径 - 路线没有“标题”。它是具有标题的内容文件。但是使用路由自动功能,您可以自动生成路由,并将该文档的标题或其他字段用于路径。 – dbu