it-swarm.com.de

Wie behebe ich einen ReflectionException-Fehler (Klasse existiert nicht)?

Ich bin neu in drupal 8. Ich möchte das Benutzeranmeldeformular erweitern, indem ich das Feld Benutzername lösche und das E-Mail-Feld hinzufüge. Also habe ich ein benutzerdefiniertes Modul erstellt, einen Ereignisabonnenten implementiert und erklärte es als Dienstleistung:

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

Und hier ist meine Klasse 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);
    }
  }
}

Ich habe diesen Fehler, wenn ich mein neues Modul installieren möchte:

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

Jede Idee wird geschätzt!

Vielen Dank

2
Debbz

Es muss die Dateistruktur sein. Überprüfen Sie erneut, ob es sich um /modules/custom/mdm_user/src/Routing/RouteSubscriber.php handelt

Außerdem müssen Sie in Ihrer Klasse die Route nicht erneut hinzufügen, sondern sie wird als Referenz übergeben.

Sie können entfernen

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

Bin auf das gleiche Problem gestoßen. Es war ein dummer Fehler in meinem Namespace in meiner RouteSubscriper.php-Datei. Ich hatte:

namespace Drupal\my_module\Routing\RouteSubscriber;

Wann es hätte sein sollen:

namespace Drupal\my_module\Routing;
0
pwaterz

Wenn Sie über der Fehlermeldung stehen, empfehle ich Folgendes zu überprüfen:

  1. Überprüfen Sie, ob die Routing-Datei Rechtschreibfehler enthält. Dies ist möglicherweise der Name, den Sie geschrieben haben, und der Dateiname ist etwas anderes.
  2. Überprüfen Sie, ob der in der Controller-Datei definierte Klassenname mit dem Dateinamen übereinstimmt
  3. Die Ordnerstruktur ist so etwas wie '\ Drupal\Modulname\src\Controller\exampleConfig.php', aber die Routing-Datei hat so etwas wie "\ Drupal\Modulname\Controller\exampleConfig". Machen Sie sich keine Sorgen um den Ordner "src"
  4. Überprüfen Sie Ihren Namespace, ob er existiert oder nicht und ob er richtig geschrieben ist oder nicht
  5. Suchen Sie in * .routing.yml Ihres Moduls nach unnötigen zusätzlichen Zeilen.
  6. Fügen Sie 'Controller' am Ende der Datei mit Ihrer Controller-Klasse und am Ende des Klassennamens des Controllers hinzu.

Ich habe den folgenden Ansatz:

Versuchen Sie den Befehl in bash in der Nähe von web/dir von drupal 'drupal gcon', siehe auch

Hoffe das hilft.

Viel Spaß beim Codieren ....

0
Umesh Patil