微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Symfony的CMS应用动态路由

如何解决使用Symfony的CMS应用动态路由

我确定以前已经有人问过这个问题,但是我找不到我需要的东西。 我正在Symfony 4.4中构建CMS,并且需要一个动态路由器来从数据库获取其溃败和页面信息。需要使用户能够轻松添加页面并将其删除功能

我可以找到有关使用父项(如“ / blogs / {slug}”)建立动态页面的信息 但我正在尝试不使用“ / blogs /”而仅使用“ / {slug}”来构建它。

据我所知,我不能仅仅在这样的控制器中使用路由注释

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

这将适用于除首页以外的所有路线,并使其他设置的路线不起作用(我相信,如果我错了,请告诉我,我想错了。)

我当时想我可以编写一个PHP程序,根据数据库中的信息以YAML,XML或PHP生成一个Routes文件,但我想知道是否有更有效或更有效的方法来构建此功能

对Symfony还是陌生的,感觉我什么都不知道。

解决方法

我找到了解决方案。 不确定这是最佳做法,但是否有效。 https://symfony.com/doc/4.4/routing/custom_route_loader.html 使用自定义路由加载程序,我创建了一个加载函数,该函数调用我的entityManager以获取我要用于CMS的所有URL。 然后,我将这样的路由添加到一个控制器类函数中

        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);
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。