2014-09-23 57 views
11

我們的Symfony應用程序目前是一個應用程序,它很快就需要能夠讓多個站點指向相同的Symfony核心,並且基於當前所在的站點具有略微不同的功能。特性在Symfony中切換

作爲一個例子,我們可能會在一個網站上顯示一條橫幅,而不是另一個網站。另一個例子是將在不同網站上啓用/禁用的付款選項。或者另一個是不同網站上的表單上的不同字段。

有沒有人有過這樣構造Symfony應用程序的經驗?

回答

3

如果你想「主題」你的應用程序,你可以使用LiipThemeBundle,它真的很好。對於激活/禁用功能,您還可以使用FeatureToggleBundle軟件包(最近安靜)。

你也可以實現這樣一個基本的幫手:

/** 
* Check if a feature is activated. 
* 
* @param string $feature Name of the feature 
* 
* @throws AccessDeniedHttpException 
*/ 
protected function checkFeature($feature) 
{ 
    $features = $this->container->getParameter('app.features') 
    if (!$features[$feature]) { 
     throw new AccessDeniedHttpException(); 
    } 
} 

... 

$this->checkFeature('contact_form'); 

有了這樣的配置:

app.features: 
    contact_form: false 
2

耶士那symfony的

enter image description here

symfony中的優勢使用與路由和控制連接的內核勒勒,然後迴應正在創建。

如果你想在symfony中使用多個應用程序,你可以很容易地做到這一點,這是symfony的一個優點。爲此,你只需要添加一些路由,一切都將自動完成。

您可以使用symfony表單類添加表單並將它們附加到具有必需字段的其他頁面,而無需再次創建整個表單。 如果你想添加或刪除一些功能開/關,你可以通過app類或通過創建不同的控制器。

3

您必須知道,使用內核事件偵聽器可以完成大部分工作。

例如,您可以在'CoreBundle'中使用kernel.request事件將用戶引用到不同的模板,具體取決於他所在的域名。

因此,在您的情況下,網站可能很容易在網站上顯示橫幅,但不會顯示另一個橫幅。

你可以看看這篇文章,解釋它:

Twig templating using event listener