forms - Symfony:在带有集合元素的表单中获取实体 id
问题描述
我正在设置一个带有 Collection 元素的表单。我按照文档中的描述设置原型
我已将我的 javascript 设置为管理动态添加/删除部分。
但我想将已保存元素的实体 ID 作为数据元素 ID 添加,因为如果某些字段发生更改,我想对已保存的集合元素执行 ajax 检查(在表单填写期间,而不是在提交阶段)。所以我需要将实体 id 提供给 DOm 以传递给数据。
<form ...>
<ul class="tariffAdjustments ulprototype" data-prototype="{{ protos.tariffAdjustment_prototype(form.tariffAdjustments.vars.prototype)|e('html_attr') }}">
{% for tariffAdjustment in form.tariffAdjustments %}
<li class="eltariffadjustment" data-taid="XXX">
{# can't retrieve the element id #}{{dump(form.tariffAdjustments.vars)}}
{{ protos.tariffAdjustment_prototype(tariffAdjustment)|raw }}
</li>
{% endfor %}
</ul>
</form>
在{{dump(form.tariffAdjustments.vars)}}
我有:
FormView {#18167
+vars: array:30 [
"value" => PersistentCollection {#9714}
"form" => FormView {#18167}
"id" => "module_entity_tariffAdjustments"
...
"prototype" => FormView {#18189 ▼
+vars: array:27 [▼
"id" => "module_entity_tariffAdjustments___name__"
...
]
+parent: FormView {#18167}
+children: array:10 []
"name" => FormView {#18192} <= entity field exposed in the FormType
"startDate" => FormView {#18197}
...
-rendered: false
}
]
+parent: FormView {#8546 ▶}
+children: array:3 [▼
0 => FormView {#18336 ▼
+vars: array:27 [▼
"value" => TariffAdjustment {#9798 ▼
-id: 154 <= what i'm looking for
...
}
...
]
+parent: FormView {#18167}
+children: array:10 []
-rendered: false
}
1 => FormView {#18338 ▼
+vars: array:27 [▼
"value" => TariffAdjustment {#9798 ▼
-id: 172 <= what i'm looking for
...
}
...
]
+parent: FormView {#18167}
+children: array:10 []
-rendered: false
}
]
-rendered: false
}
我的实体 ID 显然不在我的 FormType 中:我不想设置它。
编辑
主要形式
class ModuleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$em = $options['entity_manager'];
$builder
->add('tariffAdjustments', CollectionType::class, [
'label' => 'module.tariffAdjustments',
'required' => false,
'attr' => [
'class' => 'collectiondata',
],
'constraints' => new Valid(),
'entry_type' => TariffAdjustmentType::class,
'entry_options' => ['entity_manager' => $em],
'by_reference' => false,
'allow_add' => true,
'allow_delete' => true,
]);
}
}
和收集表格
class TariffAdjustmentType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$em = $options['entity_manager'];
$builder
->add('name', TextType::class, [
'label' => 'name',
'label_attr' => ['class' => 'mandatory'],
'required' => true,
]);
...
}
}
也许我错过了一些明显的东西,但我找不到什么。谢谢
解决方案
我多么愚蠢:
我正在设置{{dump(form.tariffAdjustments.vars)}}
,但由于我在循环中,我只需要设置:tariffAdjustment.vars.value.id
这是我寻找的实体的 id。
推荐阅读
- java - 两个线程是否有可能面对单个对象实例的死锁?
- machine-learning - 具有单个时间信号输入的 LSTM 多步预测
- ajax - 通过 AJAX 在 Yii2 中验证 Select2
- android-gradle-plugin - 由于“无法从...加载 Maven 元数据”,Gradle 同步失败,但我可以通过浏览器下载文件
- azure - 从 REST API 复制数据非常慢 - ADF
- rest - URL 矩阵参数与路径参数
- mysql - 如何从一个mysql表迁移到另一个包含自动增量列的类似表
- angular - 从 dist 目录中删除未使用的 flag-icon-css 图像
- javascript - Chart.js 画布:无法居中
- postgresql - 如何从 PostgreSQL 中的函数访问外部范围变量?