Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: ClassNotFoundException in "library/Contao/Model/Registry.php"

  1. #1
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard ClassNotFoundException in "library/Contao/Model/Registry.php"

    Hallo zusammen,

    ich versuche gerade eine meiner Erweiterungen von Contao 3.5 auf Contao 4.8 zu portieren und verzweifle gerade an einer Fehlermeldung, die für mich keinen Sinn ergibt. Möglicherweise habe ich aber noch nicht alle Zusammenhänge zwischen Contao, Symfony und den Namespaces verstanden. Bisher hat alles wunderbar funktioniert. Ich scheitere jedoch zurzeit an der Einbindung einer zusätzlichen Klasse.

    Die composer.json des Bundles sieht wie folgt aus:
    Code:
    {
    	"name":"bohnmedia/playerrating-bundle",
    	"description":"Rate players for football matches",
    	"keywords":["contao","json","api"],
    	"type":"contao-bundle",
    	"homepage":"https://bohn.media",
    	"license":"MIT",
    	"authors":[
    		{
    			"name":"bohn.media",
    			"homepage":"https://bohn.media",
    			"role":"Developer"
    		}
    	],
    	"require": {
    		"contao/core-bundle":">=4.8"
    	},
    	"conflict": {
    		"contao/core": "*",
    		"contao/manager-plugin": "<2.0 || >=3.0"
    	},
    	"extra": {
    		"contao-manager-plugin": "BohnMedia\\PlayerRatingBundle\\ContaoManager\\Plugin"
    	},
    	"autoload":{
    		"psr-4": {
    			"BohnMedia\\PlayerRatingBundle\\": "src/"
    		}
    	}
    }
    Über Autoload wurde der Ordner "src/" angegeben. Im Ordner "src/Model" liegt die Datei "PrMatchPlayerModel.php".

    PHP-Code:
    <?php

    namespace BohnMedia\PlayerRatingBundle\Model;

    use 
    Contao\Model;

    class 
    PrMatchPlayerModel extends Model
    {
        protected static 
    $strTable 'tl_pr_match_player';
    }
    Innerhalb eines Scripts versuche ich nun auf diese Klasse zuzugreifen.

    PHP-Code:
    ...
        if (
    $rating >= && $rating <= && !$this->Session->get("playerrating_id".$id)) {
            if (
    $result = \BohnMedia\PlayerRatingBundle\Model\PrMatchPlayerModel::findById($id))
            {
    ... 
    Leider erhalte ich beim Aufruf der Seite eine 500 Seite und folgenden Hinweis im LOG-File.

    Code:
    [2020-02-07 18:24:26] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException: "Attempted to load class "PrMatchPlayerModel" from the global namespace. Did you forget a "use" statement for "BohnMedia\PlayerRatingBundle\Model\PrMatchPlayerModel"?" at /var/www/vhosts/bohn.media/spielerzeugnis.bohn.media/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Model/Registry.php line 101 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ClassNotFoundException(code: 0): Attempted to load class \"PrMatchPlayerModel\" from the global namespace.\nDid you forget a \"use\" statement for \"BohnMedia\\PlayerRatingBundle\\Model\\PrMatchPlayerModel\"? at /var/www/vhosts/bohn.media/spielerzeugnis.bohn.media/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Model/Registry.php:101)"} []
    Hat jemand eine Idee?
    Geändert von chatjack (07.02.2020 um 18:50 Uhr)

  2. #2
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Ich habe die Erweiterung jetzt noch einmal komplett entfernt und neu installiert. Leider tritt der Fehler noch immer auf.

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Ich vermute du hast dein Model noch nicht bzw. falsch registriert?

  4. #4
    Contao-Nutzer Avatar von chatjack
    Registriert seit
    02.09.2012.
    Ort
    Essen
    Beiträge
    160

    Standard

    Wie blöd! Danke! Hätte ohne den Tipp vermutlich noch stundenlang gesucht.

    Habe jetzt folgende Zeile in die "config.php" eingetragen.

    PHP-Code:
    $GLOBALS['TL_MODELS']['tl_pr_match_player'] = \BohnMedia\PlayerRatingBundle\Model\PrMatchPlayerModel::class; 
    Jetzt klappt's. Was Contao seit der Version 4, wie, wann und wo einbindet macht mir leider immer noch Probleme.

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    33.803
    Partner-ID
    10107

    Standard

    Das war aber in Contao 3 genau so

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •