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

问题描述

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

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

对于参数, $ this-> getParameter()是反模式吗?如果是,我们如何才能让他们成为控制者,当然我们必须始终遵守良好做法?

有关信息,请使用 services.yml

中的 bind Symfony 4.1 中提供解决方案。

以以下脚本为例,以环境为例:

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,以了解如何使用参数配置服务。