web-dev-qa-db-fra.com

Comment puis-je corriger une erreur ReflectionException (la classe n'existe pas)?

Je suis nouveau sur drupal 8. Je voudrais étendre le formulaire de connexion utilisateur en supprimant le champ nom d'utilisateur et en ajoutant le champ email. J'ai donc créé un module personnalisé, j'ai implémenté un Event Subscriber et l'a déclaré comme un service:

services:
    mdmuser.route_subscriber:
        class: Drupal\mdm_user\Routing\RouteSubscriber
        tags: 
             - {name: event_subscriber }

Et voici ma classe RouteSubscriber

 <?php

 /**
 * @file
 * Contains \Drupal\mdm_user\Routing\RouteSubscriber.
 */

 namespace Drupal\mdm_user\Routing;

 use Drupal\Core\Routing\RouteSubscriberBase;
 use Symfony\Component\Routing\RouteCollection;

 /**
 * Listens to the dynamic route events.
 */
 class RouteSubscriber extends RouteSubscriberBase {

 protected function alterRoutes(RouteCollection $collection) {

     if ($route = $collection->get('user.login')) {
      $route->setDefault('_form', '\Drupal\mdm_user\Form\UserLoginForm');
      $collection->add('user.login', $route);
    }
  }
}

J'ai cette erreur quand je veux installer mon nouveau module:

ReflectionException: Class Drupal\mdm_user\Routing\RouteSubscriber does not exist in ReflectionClass->__construct() (line 31 of core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterEventSubscribersPass.php).

Toute idée est appréciée!

Merci

2
Debbz

Ce doit être la structure du fichier. Vérifiez à nouveau qu'il se trouve dans /modules/custom/mdm_user/src/Routing/RouteSubscriber.php

De plus, dans votre classe, vous n'avez pas besoin d'ajouter à nouveau l'itinéraire, il est transmis par référence.

Vous pouvez supprimer

$collection->add('user.login', $route);
1
oknate

Ran dans le même problème. Cela a fini par être une erreur stupide dans mon espace de noms dans mon fichier RouteSubscriper.php. J'avais:

namespace Drupal\my_module\Routing\RouteSubscriber;

Quand cela aurait dû être:

namespace Drupal\my_module\Routing;
0
pwaterz

Si vous obtenez un message d'erreur au-dessus, je vous suggère de suivre les choses à vérifier,

  1. Vérifiez s'il y a des fautes d'orthographe dans le fichier de routage, c'est peut-être le nom que vous avez écrit est quelque chose et le nom de fichier est autre chose.
  2. Vérifiez que le nom de classe défini dans le fichier du contrôleur correspond au nom du fichier
  3. La structure du dossier est quelque chose comme '\ Drupal\nom_module\src\Controller\exampleConfig.php' mais le fichier de routage aura quelque chose comme ceci "\ Drupal\nom_module\Controller\exampleConfig" ne vous inquiétez pas du dossier "src"
  4. Vérifiez votre espace de noms s'il existe ou non et s'il est correctement écrit ou non
  5. Vérifiez les lignes supplémentaires inutiles dans * .routing.yml de votre module.
  6. Ajoutez "Controller" à la fin du fichier avec votre classe de contrôleur et à la fin du nom de classe du contrôleur.

J'ai l'approche de problème avec ci-dessous:

Essayez la commande en bash près du web/dir de drupal 'drupal gcon', voir aussi

J'espère que cela t'aides.

Codage heureux ....

0
Umesh Patil