功能在Symfony中切换

时间:2014-09-23 03:05:50

标签: php symfony

我们的Symfony应用程序目前是一个应用程序,很快就需要能够将多个站点指向同一个Symfony核心,并根据当前所在的站点具有略微不同的功能。

作为一个例子,我们可能会在一个网站上展示横幅而不是另一个网站。另一个示例是将在不同站点上启用/禁用的付款选项。或者另一个是不同网站上表单上的不同字段。

有没有人有过以这种方式构建Symfony应用程序的经验?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

您必须知道使用内核事件侦听器可以完成大部分工作。

你可以在' CoreBundle'例如,使用kernel.request事件,将用户引用到不同的模板,具体取决于他所在的域名。

因此,在您的情况下,网站很容易在网站中显示横幅而不是其他网站。

您可以查看解释它的文章:

Twig templating using event listener

答案 2 :(得分:2)

Yess认为symfony的优势

enter image description here

symfony使用与路由和控制器连接的内核,然后创建响应。

如果你想在symfony中使用多个应用程序,你可以很容易地做到这一点,这是symfony的一个优点。为此你只需要添加一些路由,一切都将自动完成。

您可以使用symfony表单类添加表单并将其附加到具有必填字段的其他页面,而无需再次创建整个表单。 如果要打开/关闭某些功能,可以通过app类或创建不同的控制器来执行此操作。