如何将变量传递给项目中的所有控制器?
假设我有一个与用户相关的实体,称为用户,而公司与产品,客户和其他实体相关。
用户进入应用程序后,他将在下拉菜单中选择要使用的公司(因为他可以拥有多个公司)。
现在我正在注入TokenStorageInterface并在控制器中执行此操作
$user = $tokenStorage->getToken()->getUser();
和
$form->add('company', EntityType::class, [
'class' => Company::class,
'choice_label' => 'name',
'choice_value' => 'id',
'label' => 'Company:',
'choices' => $user->getCompanies()
]);
但是问题是我在每种形式和每个控制器中都重复了这段代码,而且我有很多。 另外,我不想在任何形式的公司中都有下拉菜单,我想根据他进入应用程序时的选择自动保存company_id,因此所有CRUD操作都将与此Company_id保存在FK中。 如果用户要更改公司,则只需转到导航栏上的固定下拉列表(例如),然后对其进行更改,即可更改此全局变量中的ID。
我该如何实现?
答案 0 :(得分:1)
您可以在模板中使用https://symfony.com/doc/4.0/templating/embedding_controllers.html。
最好的方法是创建自己的服务,以提供必要的逻辑。然后将此服务加载到控制器中,并将此动作嵌入模板中。