2016-07-29 7 views
1

Ich habe Probleme, Drupal 8 zu bekommen, um die Klassen meines benutzerdefinierten Moduls aus dem gleichen Namespace zu laden. Hier ist, was ich habe:Drupal 8 meine Modulklasse nicht zur Registrierung hinzufügen/Autoloading

<?php 

namespace Drupal\sign_up\Form; 

use Drupal\Core\Form\FormBase; 
use Drupal\Core\Form\FormStateInterface; 
// ... snip ... 

class StandardForm extends CLESignUpForm 
{ 

Welche alles funktioniert perfekt auf meiner lokalen Umgebung. Wenn im Einsatz der Server sagt: PHP Fatal error: Class 'Drupal \ sign_up \ Formular \ CLESignUpForm' nicht 21 in /path/to/drupal/modules/sign_up/src/Form/StandardForm.php auf Linie gefunden

include 'CLESignupForm.php';

Es funktioniert gut: wenn ich die Zeile. Aber das vereitelt den Zweck, Klassen automatisch zu laden, oder? get_declared_classes() zeigt nicht meine Basisklasse .. oder sogar die aktuell geladene Klasse an.

Haben Sie sich Gedanken darüber gemacht, wie Sie diese bestimmte Umgebung erfüllen können? Ich habe die db und config direkt von meinem lokalen Setup geladen, wo es funktioniert. Könnte es irgendwie eine php/apache Einstellung sein?

+0

Warum fügst du 'drupal \ sign_up \ Form \ CLESignUpForm;' nicht hinzu? –

+0

Eigentlich dachte ich, es wäre unnötig, wenn sie den Namensraum teilen? Das muss irgendwo eine Einstellung sein? –

+0

Es gibt keine Möglichkeit für PHP, ohne Ihre Hilfe von Ihrer 'CLESignupForm'-Klasse zu erfahren. Sie müssen also entweder die direkte Include-Anweisung verwenden oder sich auf die Drupal-Funktion [autoloading] (https://www.drupal.org/node/2156625) verlassen, indem Sie die Anweisung 'use' verwenden (bevorzugt). –

Antwort

0

Stellt sich heraus, ich bin ein Knucklehead. CLESignUpForm ist die falsche Großschreibung des Typs. Die korrekte Großschreibung ist CLESignupForm. Immer noch nicht klar, warum es in jeder anderen Umgebung funktioniert und nicht in dieser, aber es gibt mir das Gefühl, dass es zumindest ein bisschen mehr Verstand gibt.

Verwandte Themen