我目前正在爲最近開始的一個項目研究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