php - Symfony 4 中 CollectionType 表单的问题
问题描述
Symfony 4 中的 Collectiontype 有问题。我尝试在数据库的许多表中保存一些信息。我的保存级联是: 1 releve 包含 1 carriere 包含很多 infoCarriere 包含很多点 为了保存此信息,我使用带有 collectionType 的特定表单: My CarriereRelaiType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add("caisses", CollectionType::class, [
'entry_type' => CarriereType::class,
'allow_add' => true,
'allow_delete' => true,
'attr' => ['class' => 'col-sm-2']
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => null,
'empty_data' => null
]);
}
我的信息CarriereRelaiType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add("infoCarrieres", CollectionType::class, [
'entry_type' => InfoCarriere::class,
'allow_add' => true,
'allow_delete' => true,
'attr' => ['class' => 'col-sm-2']
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => null,
'empty_data' => null
]);
}
我的积分也是一样的。显示我的控制器的一部分:
// creation carriere
$recupCaisse = [];
foreach ($dispatch as $keyDispatch => $valueDispatch){
if ($keyDispatch != "dateDoc"){
$recupCaisse[][$keyDispatch] = $valueDispatch;
}
}
$compteurCaisse = count($recupCaisse);
for ($i=0; $i<$compteurCaisse; $i++){
// creation de Carriere
$dataCarriere["caisses"][$i] = new Carriere();
foreach ($recupCaisse[$i] as $keyCaisse => $valueCaisse){
// recuperation des noms de caisse
$caisse = $caisseRepository->findByAcronyme(strtoupper($keyCaisse));
}
$dataCarriere["caisses"][$i]->setCaisse($caisse[0]);
// recuperation des numeros
foreach ($valueCaisse as $keyDetail => $valueDetail) {
if ($keyDetail == "numero") {
$dataCarriere["caisses"][$i]->setNumero($valueDetail);
}
}
}
dump($dataCarriere);
$formCarriere = $this->createForm(CarriereRelaiType::class, $dataCarriere);
$formCarriere→handleRequest($request);
for ($i=0; $i<$compteurCaisse; $i++){
foreach ($recupCaisse[$i] as $keyDetail => $valueDetail){
// ajout infocarriere
foreach ($valueDetail as $keyTempInfoCarriere => $valueTempoInfoCarriere){
$dataInfoCarriere[$keyDetail][$keyTempInfoCarriere] = new InfoCarriere();
if (is_array($valueTempoInfoCarriere)){
foreach ($valueTempoInfoCarriere as $key => $value){
if ($key != "numeroDossier"){
if ($key == 'annee'){
$dataInfoCarriere[$keyDetail][$keyTempInfoCarriere]->setAnnee($value);
}elseif ($key == 'debut'){
$dataInfoCarriere[$keyDetail][$keyTempInfoCarriere]->setDebut($value);
}elseif ($key == 'fin'){
$dataInfoCarriere[$keyDetail][$keyTempInfoCarriere]->setFin($value);
}elseif ($key == 'naturePeriode'){
$dataInfoCarriere[$keyDetail][$keyTempInfoCarriere]->setStatus($value);
}
}
}
}
}
}
}
dump($dataInfoCarriere);
$formInfoCarriere = $this->createForm(InfoCarriereRelaiType::class, $dataInfoCarriere);
$formInfoCarriere->handleRequest($request);
用树枝在我的表格上显示并保存 Carriere 是可以的。我想用所有信息显示我的所有表单,但我有这个错误消息:
Could not load type "App\Entity\InfoCarriere": class does not implement "Symfony\Component\Form\FormTypeInterface".
在我的转储($dataCarriere 和 $dataInfoCarriere)上,我具有相同的结构,但是在 $dataCarriere 中我只有 1 个条目:
array:1 [▼
"caisses" => array:4 [▼
0 => App\Entity\Carriere {#1154 ▶}
1 => App\Entity\Carriere {#1801 ▶}
2 => App\Entity\Carriere {#1860 ▶}
3 => App\Entity\Carriere {#1891 ▶}
]
]
在 $dataInfoCarriere 我有 4 个条目:
array:4 [▼
"truc" => array:35 [▶]
"bidule" => array:14 [▶]
"machin" => array:8 [▶]
"chose" => array:23 [▶]
]
(1个条目的一部分)
array:4 [▼
"truc" => array:35 [▼
11 => App\Entity\InfoCarriere {#1943 ▶}
12 => App\Entity\InfoCarriere {#2090 ▶}
13 => App\Entity\InfoCarriere {#2105 ▶}
14 => App\Entity\InfoCarriere {#2107 ▶}
15 => App\Entity\InfoCarriere {#2326 ▶}
16 => App\Entity\InfoCarriere {#2398 ▶}
17 => App\Entity\InfoCarriere {#2401 ▶}
18 => App\Entity\InfoCarriere {#2403 ▶}
我试图只用一个更改我的 $dataInfoCarriere 条目,但出现相同的错误消息。我想我忘记了什么,但我不知道是什么。预先感谢您的帮助
解决方案
推荐阅读
- excel - VBA Excel选择并删除具有相同ID的所有形状并删除
- adaboost - 如何计算 ADABoost 模型的形状值?
- angular - 多个对话框,for循环,打开 - angular 7 + angular material
- accessibility - 如何在 React Native Web (Expo) 中使用标签进行输入
- sql-server-data-tools - SSDT 生成脚本权限
- python - models.FileField.read csv 返回 b'0,0,0,0\n1,1,1,1'
- python - 两个不同的正则表达式
在 Python 中 - python - 如何在 Opencv 中绘制中间直线并以毫米为单位计算?
- c# - 在按钮上调整图像大小
- scilab - 寻找图形中心的SCILAB代码