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

时间:2018-07-26 14:36:05

标签: php symfony

每次去OK时,我都想返回/health,这样做很有效:

HealthController.php

<?php

namespace App\Controller;

use Symfony\Component\HttpFoundation\Response;

class HealthController
{
    public function ok() {
        return new Response('OK');
    }
}

routes.yaml

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

但是有没有一种方法无需创建控制器就能做完全相同的事情?

也许类似于以下内容:

health:
  path: /health
  return: 'OK'

2 个答案:

答案 0 :(得分:1)

我可以想到两种解决方法。使用Twig时,可以使用TemplateController :: templateAction呈现静态模板。参见:https://symfony.com/doc/current/templating/render_without_controller.html

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

答案 1 :(得分:0)

我相信问题是您将拥有一个没有任何控制器的路由,据我所知,这在Symfony中是不可能的。实际上,我认为在每个MVC框架中都需要一个控制器来控制输出,因为这是MVC框架的主要原理之一。