gpt4 book ai didi

symfony - 在 Symfony3 上的每个请求中在 Controller 之前执行一些代码

转载 作者:行者123 更新时间:2023-12-05 01:18:54 25 4
gpt4 key购买 nike

我需要在执行 Symfony 3 Controller 之前执行一些代码。

我阅读了本指南:http://symfony.com/doc/current/event_dispatcher/before_after_filters.html这解释了如何去做。

但是在这一点上: http://symfony.com/doc/current/event_dispatcher/before_after_filters.html#tag-controllers-to-be-checked文档解释说,我们需要在我们需要的每个 Controller 上使用 implements TokenAuthenticatedController 来指定此 EventListener 会影响哪些 Controller ,但由于我想在 之前执行代码每个 Controller (所有),我希望存在一些方法来做到这一点,而无需在我的所有 Controller 上添加 implements

最佳答案

您真的需要在每次请求时都执行代码吗?那么也许您应该查看可用的 KernelEvents(尤其是 kernel.request 和 kernel.controller)。转到:http://symfony.com/doc/current/components/http_kernel.html了解更多详细信息,例如主请求和子请求。

此外,您的 Controller 实际上不需要执行任何操作。TokenAuthenticatedController 仅在示例中实现以执行:

if ($controller[0] instanceof TokenAuthenticatedController) {
$token = $event->getRequest()->query->get('token');
if (!in_array($token, $this->tokens)) {
throw new AccessDeniedHttpException('This action needs a valid token!');
}
}

如果您不打算对监听器中的 Controller 执行任何操作并执行一些其他操作,您可以随心所欲地执行任何操作,前提是您的工作所需的一切都已注入(inject)监听器并在此时可用。

从文档编辑:

A kernel.controller listener gets notified on every request, right before the controller is executed. So, first, you need some way to identify if the controller that matches the request needs token validation.

如果你想执行你的代码,而不管最终执行哪个 Controller ,你不需要前面提到的方法来识别将执行哪个 Controller ,因此根本不需要接口(interface)。

关于symfony - 在 Symfony3 上的每个请求中在 Controller 之前执行一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42931770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com