我们的Symfony应用程序目前是一个应用程序,很快就需要能够将多个站点指向同一个Symfony核心,并根据当前所在的站点具有略微不同的功能。
作为一个例子,我们可能会在一个网站上展示横幅而不是另一个网站。另一个示例是将在不同站点上启用/禁用的付款选项。或者另一个是不同网站上表单上的不同字段。
有没有人有过以这种方式构建Symfony应用程序的经验?
答案 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
事件,将用户引用到不同的模板,具体取决于他所在的域名。
因此,在您的情况下,网站很容易在网站中显示横幅而不是其他网站。
您可以查看解释它的文章:
答案 2 :(得分:2)
Yess认为symfony的优势
symfony使用与路由和控制器连接的内核,然后创建响应。
如果你想在symfony中使用多个应用程序,你可以很容易地做到这一点,这是symfony的一个优点。为此你只需要添加一些路由,一切都将自动完成。
您可以使用symfony表单类添加表单并将其附加到具有必填字段的其他页面,而无需再次创建整个表单。
如果要打开/关闭某些功能,可以通过app
类或创建不同的控制器来执行此操作。