Php 将变量传递并设置到所有控制器-Symfony4

Php 将变量传递并设置到所有控制器-Symfony4,php,symfony,Php,Symfony,如何将变量传递给项目中的所有控制器 假设我有一个名为User的实体,它与公司相关,公司与产品、客户和其他实体相关 当用户进入应用程序时,他将在下拉列表中选择他将使用的公司(因为他可以有多家公司) 现在我正在注入TokenStorageInterface并在控制器中执行此操作 $user = $tokenStorage->getToken()->getUser(); 及 但问题是,我在每个表单和每个控制器中重复这段代码,我有很多。 另外,我不想在每个表格中都有公司的下拉列表,我想根据

如何将变量传递给项目中的所有控制器

假设我有一个名为User的实体,它与公司相关,公司与产品、客户和其他实体相关

当用户进入应用程序时,他将在下拉列表中选择他将使用的公司(因为他可以有多家公司)

现在我正在注入TokenStorageInterface并在控制器中执行此操作

$user = $tokenStorage->getToken()->getUser();

但问题是,我在每个表单和每个控制器中重复这段代码,我有很多。 另外,我不想在每个表格中都有公司的下拉列表,我想根据他进入应用程序时的选择自动保存公司id,这样所有CRUD操作都会在FK中使用该公司id保存。 如果用户想要更改公司,他只需转到导航栏中的固定下拉列表(例如),然后更改它,更改此全局变量中的ID

如何实现这一点?

您可以在模板中使用


最好的方法是创建自己的服务,提供必要的逻辑。然后将此服务加载到控制器中,并将此操作嵌入模板中

Symfony形式的活动呢?只需创建服务并将其注入到需要的地方。(您的服务将包含表单创建的逻辑。)酷,我在链接上遵循了这个示例,现在我可以显示嵌入控制器的公司的列表。但是如何将所选值传递给表单呢?嵌入控制器位于基础模板中,表单位于扩展基础模板的另一个模板中。我的嵌入html如下所示:您需要设置表单操作,其中包含嵌入的控制器的路径
$form->add('company', EntityType::class, [
                'class' => Company::class,
                'choice_label' => 'name',
                'choice_value' => 'id',
                'label' => 'Company:',
                'choices' => $user->getCompanies()
            ]);