Bonjour,

Lorsque je clique sur ma page qui est censé m'envoyer sur un lien, cela m'indique :
"Could not load type "App\Form\TaskType": class does not exist."

Alors que pourtant il me semble avoir crée toutes mes class dans mon dossier "TaskType" comme le code ci-dessous :

<?php

namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [
'label' => 'Nom'
])
->add('description', TextareaType::class, [
'label' => 'Description',
'required' => false
])
->add('dueDate', DateTimeType::class, [
'label' => 'Date d\'échéance',
'required' => false

        ])
        ->add('reminder', NumberType::class, [
            'label' => 'Rappel (en minutes)',
            'required' => false
        ])

        ->add('save', SubmitType::class)
    ;
}

}

Merci de votre aide !

15 réponses


Guizmo
Auteur
Réponse acceptée

Ahhhhh puré j'avais mis le fichier Form dans bin au lieu de le mettre dans src, franchement bien vu ça marche parfaitement !!! :D
Merci Jessy ainsi qu'à Bernard pour votre aide ;)

As tu importer la class dans le controller ?
essaie aussi de supprimer le cache

Guizmo
Auteur

Bonjour Bernard,
Oui biensûr voici le code de mon fichier TaskController.php

<?php

namespace App\Controller;

use App\Entity\Task;
use App\Entity\Listing;
use App\Form\TaskType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;

/**

  • @Route("{listingId}/task", name="task_", requirements={"listingId"="\d+"})
    */
    class TaskController extends AbstractController
    {
    /**

    • @Route("/new", name="create")
      */
      public function create(EntityManagerInterface $entityManager, Request $request, $listingId)
      {
      $listing = $entityManager->getRepository(Listing::class)->find($listingId);

      $task = new Task();
      $task->setListing($listing);

      $form = $this->createForm(TaskType::class, $task);

      $form->handleRequest($request);

      if ($form->isSubmitted() && $form->isValid()) {
      $entityManager->persist($task);
      $entityManager->flush();

      return $this->redirectToRoute('listing_show', ['listingId' => $listingId]);

      }

      return $this->render('task.html.twig', ['form' => $form->createView()]);
      }
      }

supprime le cache et composer dump-autoload

Guizmo
Auteur

On supprime le cache en faisant php bin/console cache:clear ?

oui et si l'erreur persiste même en voulant supprimer le cache, supprime aussi le dossier var/

Guizmo
Auteur

J'ai procédé comme tu m'as dit et lorsque je recharge la page cela ne change pas mon problème :/

D:\Documents\Application_web\my_project_name>php bin/console cache:clear

// Clearing the cache for the dev environment with debug true

[OK] Cache for the "dev" environment (debug=true) was successfully cleared.

D:\Documents\Application_web\my_project_name>composer dump-autoload
Generating optimized autoload files
composer/package-versions-deprecated: Generating version class...
composer/package-versions-deprecated: ...done generating version class
Generated optimized autoload files containing 4715 classes

vérifie le nom du fichier

Guizmo
Auteur

J'ai supprimé le dossier var et le nom de mon fichier est bien le bon, à mon avis il doit y avoir une erreur dans le code..

Guizmo
Auteur

C'est possible que l'erreur vienne de ma base de donnée ?

Non je ne crois pas

Bonjour, je vois ne vois pas trop d'erreur non plus à première vue.
As-tu bien ton fichier TaskType.php dans ton dossier src/FormTaskType.php ???

As tu installer la libraire form ? composer require symfony/form ?

Guizmo
Auteur

Ahhhhh puré j'avais mis le fichier Form dans bin au lieu de le mettre dans src, franchement bien vu ça marche parfaitement !!! :D
Merci Jessy ainsi qu'à Bernard pour votre aide ;)

Ahah cool ! on adore ce gens d'erreur aussi xD

Guizmo
Auteur

Ouais c'est tellement bête parfois les erreurs surtout que c'est pas la première de ce genre que j'ai eu à gérer sur mon appli et elles te font perdre du temps pour rien (tout en restant patient ^^ ) mais bon quand tu te débloques ça fait vraiment plaisir :)
Encore merci !