【发布时间】:2017-09-25 04:30:41
【问题描述】:
如何指定一组控制器(例如,管理部分的所有控制器)并分配可在这些控制器呈现的所有模板中访问的变量或服务?
Laravel 中的等价物是为不同的路由组指定不同的中间件。
我不是在寻找这些答案:
全局变量 - 变量/服务将不必要地注入到某些控制器(例如前端控制器)。
在模板中嵌入其他控制器 - 一种缓慢、冗长且重复的解决方法。
【问题讨论】:
-
你能展示你的代码吗?
-
Symfony 控制器通常返回模板的响应版本,因此中间件没有空间。通常当一个 Symfony 控制器返回一个响应时,它是一个完全解析的字符串。如果您希望能够在控制器之后处理它,您需要返回一组参数来识别模板,然后设置一个
Kernel::Response侦听器来处理额外的参数和响应对象的实际创建。 -
我能想到的两个选项,你基本上都说了 1) 服务 - 如果用户有权限,或者请求是正确的 url/,则具有获取变量的功能控制器等 2) 中间件 - 使用事件监听器在正确的请求上设置变量。
标签: php symfony templates controllers