Bonjour ,
J’ai un soucis avec mon code. Pour expliquer le contexte :
Je fais de la récupération d’information via un OCR.
Ces informations se retrouve dans un tableau (de type annee, debut, fin, status, points, type de points)
Toutes ces informations doivent être sauvegarder en BDD, mais sur des tables différentes :
Voici mon 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
]);
}
Voici mon InfoCarriereRelaiType :
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
]);
}
et j’ai la même chose pour les points.
Voici mon une partie de mon controller :
(pour info, $dispatch est le tableau mappé issu de mon OCR)
//creation de mon releve
$formReleve = $this->createForm(ReleveRelaiType::class, $dispatch, [
'etudie' => $etudie,
]);
$formReleve→handleRequest($request);
// 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);
Tout se passe bien en sauvegarde jusqu’à la carrière (j’ai 2 niveaux au dessus).
Ce que je veux
je voudrai pouvoir afficher l’ensemble de mon tableau afin de modifier/valider les informations
Ce que j’obtiens
Comme dit précédemment, tout se passe bien jusqu’à la carriere (affichage / sauvegarde). Lorsque je veux continuer avec mes infoCarriere, voici le message d’erreur Symfony :
Could not load type "App\Entity\InfoCarriere": class does not implement "Symfony\Component\Form\FormTypeInterface".
Dans mes dumps $dataCarriere et $dataInfoCarriere j'obtiens sensiblement la meme chose... sauf que la Carriere n'a qu'une seule entree et l'InfoCarriere en possède 4... mais ensuite, on a bien a chaque fois un objet
Dump $dataCarriere:
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 ▶}
]
]
Dump $dataInfoCarriere:
array:4 [▼
"truc" => array:35 [▶]
"bidule" => array:14 [▶]
"machin" => array:8 [▶]
"chose" => array:23 [▶]
]
et en voici une partie deplié:
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 ▶}
J’ai l’impression qu’il me manque pas grand-chose mais je sais pas quoi… merci par avance de votre aide ;) et de m'avoir lu
bonne journée