Почему бы не использовать декоратор ?
Например, если ваш контроллер выглядит примерно так:
class IndexController {
public function __invoke(CustomClass $object) {
// do your thing
// return a Response
}
Вы можете создать декоратор CustomClassConverterController
class CustomClassConverter {
protected $innerController;
protected $em;
public function (IndexController $controller, EntityManagerInterface $em) {
$this->innerController = $controller;
$this->em = $em;
}
public function __invoke($id) {
$object = $this->em->getRepository(CustomClass::class)->findOne((int) $id);
if (! $object instanceof CustomClass) {
throw new NotFoundHttpException('Custom class ' . $id . ' not found');
}
return $this->innerController($object);
}
}
Вам необходимо добавить эту конфигурацию, чтобы активировать украшение:
services:
App\Controller\IndexController: ~
App\Decorator\CustomClassConverterController:
decorates: App\Controller\IndexController