代码之家  ›  专栏  ›  技术社区  ›  Efekan

在没有控制器的情况下从routes.yaml返回响应

  •  0
  • Efekan  · 技术社区  · 7 年前

    我想回去 OK 每当我去 /health 这样做真的很好:

    健康控制器.php

    <?php
    
    namespace App\Controller;
    
    use Symfony\Component\HttpFoundation\Response;
    
    class HealthController
    {
        public function ok() {
            return new Response('OK');
        }
    }
    

    路线.yaml

    health:
      path: /health
      controller: App\Controller\HealthController::ok
    

    但是有没有一种方法可以在不创建控制器的情况下完成完全相同的事情呢?

    可能是这样的:

    health:
      path: /health
      return: 'OK'
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   dbrumann    7 年前

    我可以想出两个办法来实现这个目标。使用Twig时,可以使用TemplateController::templateAction呈现静态模板。见: https://symfony.com/doc/current/templating/render_without_controller.html

    你可以写一个 HealthCheckEventListener 订阅 kernel.request 事件,然后在请求包含路径时执行所需的操作。然后可以将其重新用于其他项目。

        2
  •  0
  •   Dirk J. Faber    7 年前

    我相信问题是你会有一条没有 任何 控制器和这是(据我所知)不可能在Symfony。事实上,我认为在每个MVC框架中,您都需要一个控制器来控制输出,因为这是MVC框架的主要原则之一。