我正在运行一个 symfony 应用程序,我想从所有控制器到所有渲染设置一个新变量。
原因是页脚中的某些内容变得动态并且符合 MVC 模式,我想将这些新数据的处理放在我的控制器中。
用 symfony 做到这一点的好方法是什么?
编辑
我没有将 symfony 用作 REST API,Symfony 服务器仅以 HTML 形式提供树枝渲染模板。
我的案例详情:
当前的树枝模板具有表单的硬编码标题:
<div>
<h2>Today</h2>
<!-- today's inputs .... -->
</div>
<div>
<h2>Tomorrow</h2>
<!-- tomorrow's inputs .... -->
</div>
我想为我的观点提供变量 :$today
和$tomorrow
. 这样我就可以渲染日期名称而不是今天或明天。
<div>
<h2>{{ today }}</h2>
<!-- today's inputs .... -->
</div>
<div>
<h2>{{ tomorrow }}</h2>
<!-- tomorrow's inputs .... -->
</div>
例如,如果今天是星期二,则必须以这种方式分配变量 :$today = "Tuesday"
和$tomorrow = "Wednesday"
。
更重要的是
这不是关于这个特定案例的问题。我现在想知道是否有一种方法可以将变量传递给所有视图而无需编辑所有控制器。正如我所见,我将一个父操作放在所有控制器上以生成此变量。我只是想知道这是否是通常的方式。
我不想使用 ajax 调用,也不想在我的模板中放入复杂的树枝代码。我想通过控制器来处理这个。
请阅读有关使用全局变量的官方文档。
在我的头顶 - 你可以注射...
或者您可以编写 Twig 扩展,例如:
class DateExtension extends \Twig_Extension
{
public function getFunctions()
{
return [
new \Twig_SimpleFunction('get_date', array($this, 'getDate'))
];
}
public function getDate($date)
{
// format it how you want
return (new \DateTime($date))->format('Y-m-d H:i:s');
}
}
然后只需通过以下方式在任何模板中使用它:
<div>
<h2>{{ get_date('today') }}</h2>
<!-- today's inputs .... -->
</div>
<div>
<h2>{{ get_date('tomorrow') }}</h2>
<!-- tomorrow's inputs .... -->
</div>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句