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 :
- 1 releve contient 1 carriere qui contient X infoCarrieres qui contient X points qui est 1 type de point
Pour valider ces informations avant sauvegarde, je passe par un formulaire et c’est l’affichage de se formulaire qui me pose problème.
Vu qu’il est possible de tout modifier de façon indépendante par la suite, je crée un formulaire relais pour mettre en place mes CollectionType (et donc, tous les morceaux de mon formulaire final)
Voici mon CarriereRelaiType :
Voici mon InfoCarriereRelaiType :
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)
Tout se passe bien en sauvegarde jusqu’à la carrière (j’ai 2 niveaux au dessus).
Je cherche à pouvoir afficher l’ensemble de mon tableau afin de modifier/valider les informations
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 :
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:
Dump $dataInfoCarriere:
et en voici une partie deplié:
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
Modifié par Gabs (10 Sep 2020 - 16:46)
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 :
- 1 releve contient 1 carriere qui contient X infoCarrieres qui contient X points qui est 1 type de point
Pour valider ces informations avant sauvegarde, je passe par un formulaire et c’est l’affichage de se formulaire qui me pose problème.
Vu qu’il est possible de tout modifier de façon indépendante par la suite, je crée un formulaire relais pour mettre en place mes CollectionType (et donc, tous les morceaux de mon formulaire final)
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).
Je cherche à pouvoir afficher l’ensemble de mon tableau afin de modifier/valider les informations
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
Modifié par Gabs (10 Sep 2020 - 16:46)