我正在将应用程序从遗留框架转换为Symfony2。该应用程序的一个功能是在呈现页面的底角有一条小小的消息,上面写着
served by appserver3 in 200ms
或类似的。它会根据您所使用的应用服务器以及提供请求所花费的时间而变化。 appserver的值在配置文件中设置(但这在很大程度上与此无关)。
我应该创建一个扩展BaseController
的{{1}}类型类,然后让我的所有控制器扩展它吗?如果是这样,我将如何确保Controller
始终将BaseController
和responseTime
添加到将传递给我的twig模板的变量列表中,而无需手动添加在这样的每个控制器中:
appServerName
(显然,这会假设我在// e.g. src/MyNamespace/MyBundle/Controller/AboutUsController.php
return $this->render('MyNamespaceMyBundle:Default:index.html.twig', array('var1' => $var1, 'appServerName' => $this->getAppServerName(), 'responseTime' => $this->getResponseTime()));
中创建了getAppServerName
和getResponseTime
方法。)
这看起来像很多copypasta,我转移到Symfony2的全部理由是为了避免这种情况:\
答案 0 :(得分:1)
对于模板中的动态部件,尤其是从每个模板扩展的基本模板,您可以从控制器操作渲染输出。它就像twigs include
但它包含返回的动态内容。
请参阅文档中的Embedding Controllers。
输出服务的appserver非常简单。只需从容器中获取参数即可。计算加载时间可能是一项更复杂的任务,对用户来说并非真正必要。
如果您appserver
中只配置了静态parameters.yml
参数,则可以在config.yml
中将其定义为树枝全局变量:
twig:
globals:
appserver: "%appserver%"
现在您可以将其包含在所需的树枝模板中:
serverd from {{ appserver }}