簡體   English   中英

使用 Symfony 的 CMS 應用動態路由

[英]Dynamic Routing For CMS App Using Symfony

我確定之前有人問過這個問題,但我找不到我需要的東西。 我正在 Symfony 4.4 中構建一個 CMS,需要一個動態路由器從數據庫中獲取路由和頁面信息。 需要讓用戶輕松添加和刪除頁面的能力。

我可以找到有關使用像這樣的“/blogs/{slug}”這樣的父 slug 構建動態頁面的信息,但我試圖在沒有“/blogs/”的情況下構建它,所以只是“/{slug}”。

現在據我所知,我不能像這樣在 controller 中使用路由注釋

     /**
     * @Route("/{path}", name="Pages")
     */
    public function index($path, Request $request): Response {
      ...
    }

因為這適用於除主頁以外的所有路線,並使其他設定的路線不起作用(我相信,如果我錯了,請告訴我,我很樂意是錯的。)

我想我可以編寫一個 PHP 程序,根據數據庫中的信息在 YAML、XML 或 PHP 中構建一個路由文件,但想知道是否有更有效或更好的方法來構建此功能。

對Symfony還是個新手,感覺什么都不懂。

我找到了解決辦法。 不確定這是最佳做法,但它確實有效。https://symfony.com/doc/4.4/routing/custom_route_loader.html我使用自定義路由加載器創建了一個負載 function,它調用我的 entityManager 來獲取我想要的 CMS 的所有 URL。 然后我將這樣的路線添加到一個 controller class function

        foreach ($URLs as $url) {
            $defaults = array('_controller' => 'App\Controller\CMSController::index');
            $requirements = array('parameter' => '\d+');
            $route = new Route($url->getUrl(), $defaults, $requirements);
            $routes->add($url->getPageFunctionName(), $route);
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM