架构与请求 · 第 9 题,共 12 题
一个自定义 ViewHelper 需要当前请求,例如用来读取站点。在 TYPO3 v14 中它如何获取请求?
有 1 个正确答案。 中等
显示答案
答案
- C $this->renderingContext->getAttribute(ServerRequestInterface::class)
解析
RenderingContextFactory 将请求作为 RenderingContext 的属性保存,Core 自身也从那里读取,例如在 f:image 和 f:flashMessages 中。因此 ViewHelper 通过 $this->renderingContext->getAttribute(ServerRequestInterface::class) 获取请求,然后可以调用例如 $request->getAttribute('site')。$GLOBALS['TYPO3_REQUEST'] 是 Core 正在逐步淘汰的遗留物。请求不是 DI 容器中的服务,因此 makeInstance 不会返回它。