自动路由捆绑 - 和参数? (Symfony CMF)

时间:2014-07-04 14:50:30

标签: php symfony-cmf

我成功获得Symfony CMF和自动路由捆绑(以及自定义控制器)以下列方式(路径)加载文档:

.../category/article-name

这很好用。但我需要这样的东西,很容易通过标准的Symfony2实现:

.../category/article-name/{page}

将页面作为参数传递给控制器​​, 例如。 $ page = 2 - >控制器处理文章文档的内容以仅显示给定页面 或$ page = null - > (所以没有{page}参数) - 如上所述,但显示的是页面默认值1

如何使Symfony CMF的路由自动捆绑包使用路由中的参数?

因此,基本路径与此自动路由捆绑配置中的配置完全相同,但另外我可以使用传递给控制器​​的参数,以便可以对它们做出其他决策。任何提示?谢谢!

我的自动路由配置:

    MyApp\MyCmsBundle\Document\Article:
        content_path:
            #fixed path of all categories and therefore articles
            articles_categories_path:
                provider: [specified, { path: /cms/routes }]
                exists_action: use
                not_exists_action: throw_exception
            #category path
            category_path:
                provider: [content_method, { method: getRouteNodeCategory }]
                exists_action: use
                not_exists_action: throw_exception
        #article name
        content_name:
            provider: [content_method, { method: getTitle }]
            exists_action: [auto_increment, { pattern: -%d }]
            not_exists_action: create
    MyApp\MyCmsBundle\Document\ArticlesCategory:
        content_path:
            #fixed path of all categories and therefore articles
            articles_categories_path:
                provider: [specified, { path: /cms/routes }]
                exists_action: use
                not_exists_action: throw_exception
        #category name
        content_name:
            provider: [content_method, { method: getTitle }]
            exists_action: use
            not_exists_action: create

文章文档的getRouteNodeCategory()只返回父项(即类别)名称。以下是本文档内容的一部分:

public function getRouteNodeCategory()
{
    return $this->parent->getTitle();
}

1 个答案:

答案 0 :(得分:1)

这在RoutingAutoBundle目前是不可能的,但它可以很容易地实现。

RoutingAutoBundle创建Route文档,扩展CMF的Route对象。这些Route对象支持变量模式,它允许您指定动态参数:

https://github.com/symfony-cmf/RoutingBundle/blob/1.2/Model/Route.php#L53

因此我们只需要扩展映射以包含URL中动态(变量)参数的详细信息。

另请注意,很快将发布新版本的路由自动捆绑包,其中包含更好的配置格式。

如果您可以创建一个详细说明您的用例的问题,我们将尝试为1.0版本实现它。