[英]Add the same calculated property to every Symfony2 Controller in bundle
我正在將應用程序從舊框架轉換為Symfony2。 該應用程序具有的功能之一是,在呈現的頁面的底部角落有一條小消息,上面寫着
served by appserver3 in 200ms
或類似。 它會根據您使用的應用服務器以及服務請求所花費的時間而變化。 appserver的值是在配置文件中設置的(但這在很大程度上無關緊要)。
我是否應該創建一個擴展Controller
的BaseController
類型類,然后讓我所有的控制器對其進行擴展? 如果是這樣,我將如何確保BaseController
始終將responseTime
和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
在我的方法BaseController
。)
這似乎是很多copypasta的原因,而我轉向Symfony2的全部原因是為了避免這種情況:\\
對於模板中的動態零件,尤其是從每個模板擴展的基礎模板中的動態零件,您可以呈現控制器動作的輸出。 就像樹枝include
但它包含返回的動態內容。
請參閱文檔中的嵌入控制器 。
輸出所提供的appserver很容易。 只需從容器中獲取參數。 計算加載時間可能是更復雜的任務,對用戶而言並不是真正必要的。
如果這只是一個靜態的appserver
在您的配置參數parameters.yml
你可以將其定義為在一個樹枝全局變量config.yml
:
twig:
globals:
appserver: "%appserver%"
現在,您可以將其包括在所需的樹枝模板中:
serverd from {{ appserver }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.