Symfony 将变量添加到所有渲染
我正在操作一个symfony应用程序,我想设置一个新变量,从所有控制器到所有渲染 原因是我的页脚中的某些内容已变得动态,并且符合MVC模式,我希望将新数据的处理放在我的控制器中 使用symfony的好方法是什么 编辑 我没有使用symfony作为restapi,symfony服务器只提供以HTML形式呈现的细枝模板 我的案件详情: 当前细枝模板具有表单的硬编码标题:Symfony 将变量添加到所有渲染,symfony,model-view-controller,Symfony,Model View Controller,我正在操作一个symfony应用程序,我想设置一个新变量,从所有控制器到所有渲染 原因是我的页脚中的某些内容已变得动态,并且符合MVC模式,我希望将新数据的处理放在我的控制器中 使用symfony的好方法是什么 编辑 我没有使用symfony作为restapi,symfony服务器只提供以HTML形式呈现的细枝模板 我的案件详情: 当前细枝模板具有表单的硬编码标题: <div> <h2>Today</h2> <!-- today's in
<div>
<h2>Today</h2>
<!-- today's inputs .... -->
</div>
<div>
<h2>Tomorrow</h2>
<!-- tomorrow's inputs .... -->
</div>
例如,如果今天是星期二,变量必须按以下方式分配:
$today=“星期二”
和$moody=“星期三”
还有什么
这不是关于这个具体案例的问题。我现在想知道是否有一种方法可以在不编辑所有控制器的情况下将变量传递给所有视图。如我所见,我将向所有控制器放置一个父操作以生成此变量。我只是想知道这是不是通常的方式
我不想使用ajax调用,也不想在模板中放入复杂的细枝代码。我想通过控制器来处理这个问题。你说的是什么样的“动态”呢?如果这种动态变化来自于对应用程序数据存储中存储的某些值的更改,那么我相信,您可以定义控制器操作,从数据库中检索这些数据,然后在每次页面加载时通过AJAX调用,以在客户端获取这些值。或者甚至可以使用WebSocket的帮助。但这只是假设。如果您确实需要帮助,您应该向我们提供有关任务上下文的更多信息。请阅读有关的官方文档 从我头顶上-你可以注射
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>
{{get_date('today')}
{{get_date('明天')}
您可以发布一些现有控制器和模板的代码吗?可能与的重复我不想从数据存储中检索任何值,但我希望能够通过控制器进行一些数据转换。请检查我所做的编辑我相信Tobias Xy评论链接中描述的内容与您的问题最为相关。而且,我认为在每个控制器中定义它没有任何意义——您只需要定义基本模板,并将html与所有其他模板放在一起(以及定义的服务调用),然后对其进行扩展。
<div>
<h2>{{ get_date('today') }}</h2>
<!-- today's inputs .... -->
</div>
<div>
<h2>{{ get_date('tomorrow') }}</h2>
<!-- tomorrow's inputs .... -->
</div>