forms - Symfony 3:向已经提交的表单添加一个字段
问题描述
在查看其他主题后我还没有解决我的问题,我希望将字段 user_id 添加到表单中(因为用户不会选择它)但是 symfony 返回我“调用字符串上的成员函数 addEventListener() "
这是我的代码:
if ($form->isSubmitted() && $form->isValid()) {
$builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) {
$data = $event->getData();
$form = $event->getForm();
$data['user_id'] = '2';
$event->setData($data);
});
$em = $this->getDoctrine()->getManager();
$em->persist($deplacement);
$em->flush($deplacement);
return $this->redirectToRoute('deplacement_show', array('id' => $deplacement->getId()));
}
解决方案
确定这是好方法吗?也许你最好编写一个方法来更新或创建 $deplacement,并传递 2 个参数:表单中的 $data 变量和 user_id,如下所示:
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$userId = 2;
$formData->userId = $userId;
$deplacement->update($formData);
$em->persist($deplacement);
$em->flush($deplacement);
return $this->redirectToRoute('deplacement_show', array('id' => $deplacement->getId()));
}
另外我认为你不需要事件监听器。你为什么用它?
推荐阅读
- excel - 在 VBA 中使用集合和 V 类字典
- python - 在不安装的情况下导入 Python 库
- laravel - 使用具有表之间关系的 Eloquent 模型进行 CRUDE 操作
- c# - 使用 IIS 时未触发 CancellationToken
- javascript - 定期在网站上显示和更新来自 JSON-URL 的值
- c# - ASP NET Core SignalR 从另一个服务响应客户端
- twilio - Twilio Stream 仅在收到呼叫时
- python - TensorFlow 版本 2 和 BatchNorm 折叠中的量化感知训练
- angular - 默认情况下,如何在初始加载时选择多个 mat-select 中的选项?
- controller - Controller_manager : [错误] 控制器生成器找不到预期的控制器管理器 ROS 接口