我如何在遗留 PHP 页面中集成 Symfony 控制器操作?
How do I integrate a Symfony controller action in a legacy PHP page?
我有一个遗留 PHP 应用程序和一个 Symfony 4.1 应用程序。作为预定控制器操作的结果,我需要通过呈现普通 PHP 页面的部分来集成两者。也就是说,不需要或不需要基于请求的解析,响应主体应插入旧版页面。
换句话说:我希望 Symfony 对当前请求采取行动,但提前告诉它使用 ExampleController::exampleAction() 并获得响应(正文)。实现该目标的最简洁方法是什么?
好吧,这很奇怪:)
我会尝试这样的事情:
1,获取内核实例。检查 public/index.php
如何做到这一点。
$kernel = new Kernel($env, $debug);
2、手动创建请求
$request = new Request([], [], ['_controller' => MyController::class . '::myAction']);
3、处理请求
$kernel->handle($request);
4,发送响应,并终止内核(如index.php)
使用自定义前端控制器对其进行了测试,请参见https://gist.github.com/Padam87/27a7d0825816fa358678bce7a640dd47
如果只需要响应正文,则使用$response->getContent()
。
我有一个遗留 PHP 应用程序和一个 Symfony 4.1 应用程序。作为预定控制器操作的结果,我需要通过呈现普通 PHP 页面的部分来集成两者。也就是说,不需要或不需要基于请求的解析,响应主体应插入旧版页面。
换句话说:我希望 Symfony 对当前请求采取行动,但提前告诉它使用 ExampleController::exampleAction() 并获得响应(正文)。实现该目标的最简洁方法是什么?
好吧,这很奇怪:)
我会尝试这样的事情:
1,获取内核实例。检查 public/index.php
如何做到这一点。
$kernel = new Kernel($env, $debug);
2、手动创建请求
$request = new Request([], [], ['_controller' => MyController::class . '::myAction']);
3、处理请求
$kernel->handle($request);
4,发送响应,并终止内核(如index.php)
使用自定义前端控制器对其进行了测试,请参见https://gist.github.com/Padam87/27a7d0825816fa358678bce7a640dd47
如果只需要响应正文,则使用$response->getContent()
。