簡體   English   中英

如何將變量傳遞給 Symfony 中的路由默認值?

[英]How to pass a variable to routing defaults in Symfony?

我有一個帶有多個品牌(子域)的 Symfony2 項目。 每個子域應使用相同的站點功能和相同的路由(具有不同的主機名)。 因此,我想將路由路徑中的子域設置為變量。 現在它看起來像:

mybundle_route:
    resource: "@MyProjectBundle/Controller/"
    type:     annotation
    prefix:   /
    host:     "{subdomain}.%base_host%"
    requirements:
        subdomain: sub1|sub2

並且路由本身有效。 但是如果我嘗試生成一些路由(例如在樹枝中),我會收到以下錯誤,因為沒有設置子域變量:

缺少一些必需參數(“子域”)以生成路由“company_route”的 URL。

我不想將參數添加到項目中的每個 path() 函數中。 如果我添加這樣的默認值,它適用於一個子域:

defaults:
    subdomain: sub1

但是其他子域的路由是錯誤的。 它也不適用於

defaults:
    subdomain: "%subdomain%"

我所需要的只是將 %subdomain% 變量傳遞給默認值或將其設置在控制器構造函數中的某處。 但我無法找到它是如何進行的。 我將不勝感激任何幫助。

如果沒有更好的解決方案,您可以嘗試在配置文件中設置%subdomain%參數:

  1. 在 config 文件夾中創建subdomain_parameter.php
  2. 在此文件中,您可以訪問$container因此您可以從 url 手動檢索當前子域並將其傳遞給容器。
  3. 在 config.yml 中導入subdomain_parameter.php

暫無
暫無

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

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