2014-10-28 67 views
3

我試圖從路由條件(documentation)中的表達式訪問應用範圍的symfony參數(在app/config/parameters.yml中定義)。從Symfony中的路由條件表達式訪問全局參數

我試着插入百分比符號內的參數並通過函數「參數」(如DI here所述)插入參數,都無濟於事。

下面是參數功能的例子:

example_route: 
    path:  /example/{_locale} 
    condition: "request.getLocale() in parameter('locales_array')" 
    defaults: 
     _controller: "AcmeExampleBundle:Example:index" 
     _locale: %locales_default% 


但是我越來越:

的SyntaxError - 功能 「參數」 不圍繞24位存在。


有沒有辦法從路由條件表達式中訪問參數?

+0

我認爲'parameter'表達式語言功能僅在集裝箱的生命週期表達式中可用。您可能需要自己註冊該功能。 – 2014-10-28 11:17:30

+0

@YannEugoné我希望自己沒有註冊'parameter'函數的方法。恕我直言,訪問全球參數應被視爲標準行爲... – 2014-10-28 11:31:43

+1

我完全同意你的看法。但ExpressionLanguage不是一箇舊組件(> = 2.4),因此您可能需要一些未實現的功能......在快速查看文檔(再次)後,我沒有看到任何示例中的用例。 Symfony中我看到'parameter'函數的唯一部分是DIC,所以... – 2014-10-28 11:49:41

回答

3

我打開了一個PR,在https://github.com/symfony/symfony/pull/12869爲2.7版本,直到它完成併發貨,如果需要添加容器函數提供程序並在其中注入容器的UrlMatcher,則必須使用自己的擴展版本ExpressionLanguage#evaluate的「變量」參數,以便您可以訪問參數和服務。

你可以看一下PR來得到一個提示如何去做,如果你以後需要,我會詳細地寫下它。

1

你是幸運的(我有點晚了),我只是使用語法%變量%正在訪問到Symfony的參數從表情。

這裏是你的榜樣,在Symfony的3測試:

example_route: 
    path:  /example/{_locale} 
    condition: "request.getLocale() in ['%locales_array%']" 
    defaults: 
     _controller: "AcmeExampleBundle:Example:index" 
     _locale: %locales_default%