依赖注入:在控制器中获取参数

Dependency injection : Get Param in controller

我正在将应用程序从 Symfony 2.8 迁移到 Symfony 3.4

服务现在是私有的,因此我们必须使用依赖注入作为解决方法,而不是直接从容器调用服务。

对于参数,$this->getParameter()是反模式吗?如果是,我们如何才能将它们置于控制器中,当然我们必须始终尊重良好做法?

有关信息,Symfony 4.1 中有一个解决方案,使用 services.yml 中的 bind

这是以下脚本,并且以 环境 为例:

class CmsController extends Controller
{
    /**
     * @param Request $request
     *
     * @return Response
     */
    public function importExportAction(Request $request): Response
    {
        $adminPool = $this->get('sonata.admin.pool');
        $env = $this->getParameter('environment');

         return new Response('OK');
    }
}

控制器现在被视为服务。

您可以查看this anwser,了解如何使用参数配置服务。