symfony - Symfony 5:如何使用 OneToMany 关系向会话中经过身份验证的用户添加数据?
问题描述
我想通过标题字段将数据添加到策略表,并将其与在会话中使用user_id外键进行身份验证的用户相关联。
下面的代码将数据添加到关系工作的策略表中,但通过在我的 FormType 文件中编码的选择选项(choice_label) 列出了我视图中的所有用户。
我想用让用户在会话中进行身份验证的代码替换该选择选项。
我的表:数据库
我的控制器文件:
public function create(Strategy $strategy = null, Request $request, EntityManagerInterface $em)
{
$strategy = new Strategy();
$form = $this->createForm(StrategyType::class, $strategy);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$em->persist($strategy);
$em->flush();
return $this->redirectToRoute("frStrategy");
}
return $this->render('strategy/updateStrategy.html.twig', [
"strategy" => $strategy,
"form" => $form->createView()
]);
我的表单类型文件:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('user', EntityType::class,[
'class' => User::class,
'choice_label' => 'username'
])
;
}
解决方案
要么将当前用户传递给表单,要么在表单中注入安全组件并从那里使用它。我认为如果你知道你总是只有一个选项,那么选择一个选项有点奇怪,但那是另一个主题。
private $security;
public function __construct(Security $security)
{
$this->security = $security
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title')
->add('user', EntityType::class,[
'class' => User::class,
'choice_label' => 'username',
'choices' => [$this->security->getUser()],
])
;
}
推荐阅读
- c++ - 标准中变体成员的定义
- css - 使 Angular Material Mat-Button-Toggle-Group 响应式
- c - 如何处理在 C 服务器内编译的 C++ 文件?
- cron - 是否有一个 Cron 表达式可以在跨年边界每 5 个月后安排任务?
- java - 水平和垂直滚动。如何在代码视图中显示我的 java 代码并水平和垂直滚动我的代码?
- python - 使用 Keras 在我的数据上训练自动编码器
- c++ - objcopy --redefine-syms 绑定失败
- java - 图像内容提供商是否有“库存”选择器?
- jasmine - Webdriver.IO:如何使用 WDIO 在 Jasmine 中运行特定的“it”语句
- visual-studio-code - ESLint 规则:在元素之前/之后允许空格