2012-09-21 9 views
11

Mein Bündel befindet sich unter src/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.php und der logische Name des Bündels lautet 'CinergyComponentBundle'.Wie man ein Bündel in Symfony umbenennt?

Da ich mich nicht an die Namenskonvention der Firma gehalten habe, muss ich den Logbuchnamen des Bündels ändern. Ich nehme an, ich muss es umbenennen in 'XXXCinergyComponentBundle'

Welche Dateien muss ich ändern?

Ich versuchte, die CinergyComponentBundle.php Datei und die enthaltene Klasse in XXXCinergyComponentBundle.php umzubenennen. Ich habe auch die Referenz in AppKernel geändert.

Leider funktioniert das nicht. Wenn ich versuche, den Cache zu löschen erhalte ich diese Fehlermeldung:

[Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]         
The service "cinergy.people.direct.php" has a dependency on a non-existent service "cinergy.work.registry". 

Diese beiden Dienste mit dem neuen Namen zu dem Bündel gehören. Dies führt mich zu dem Schluss, dass mir etwas beim Umbenennen fehlt.

Irgendwelche Ideen?

+0

prüfen Dieses [Video] (https://www.youtube.com/watch?v=ldyUhirsrNo) –

Antwort

3

Sie müssen den gesamten Namespace in jeder Datei aktualisieren.

Sie namespace Cynergy\ComponentBundle\Something; verwendet haben, aber du bist jetzt namespace XXXCynergy\ComponentBundle\Something;

mit Vergessen Sie nicht, Ihre services.(xml|yml) zu aktualisieren.

+0

Soweit ich verstehe, ist dies nicht korrekt. Ich ändere nicht den Pfad des Bündels. Ich ändere nur den logischen Namen. – BetaRide

+3

Dann irren Sie sich, weil PSR-0/1/2 Ihren Namespace mit dem Dateisystem abbilden oder den Autoloader manuell einstellen müssen. –

+0

Ich ändere den Namen einer Klasse und es ist nur PHP-Datei. Ich ändere nicht den Namen eines ganzen Namespace/Verzeichnisses. Da AppKernel glücklich die umbenannte Klasse findet, bezweifle ich, dass es ein Problem Autoloader/Klasse/Dateiname gibt. – BetaRide

9

Ich habe gerade die Umbenennung eines Pakets abgeschlossen und bin genau am selben Punkt gelandet wie vor ein paar Minuten. Bis zu diesem Punkt habe ich meine Editoren-Replace-Funktion benutzt. Es stellt sich heraus, es gibt einige Dateien, die einige zusätzliche Pflege benötigen, die hier angesiedelt sind (Ihr Name Bundle AcmeOldBundle war unter der Annahme, neu wird AcmeNewBundle):

  1. Acme \ OldBundle \ OldBundle.php -> NewBundle.php
  2. Acme \ OldBundle \ Dependency Injection \ AcmeOldExtension.php -> AcmeNewExtension.php

vergessen Sie nicht, auch die Klassennamen in den Dateien zu aktualisieren.

+1

Nur Echo oben; editor/search replace wird die Dateien, die leicht übersehen werden, nicht umbenennen. Verwenden Sie also sicher folgendes: 'finden. -name '* AcmeOldExtension *' 'und dann die Dateien manuell umbenennen (was vielleicht genauso ist wie oben). – fazy

7

Die aktuellen Antworten erklären Sie in der Tat, was ein Bündel umbenennen zu tun, aber sie lassen Sie ein paar Dinge aus:

  1. das Bündel in Umbenennen /app/AppKernel.php

    Von:

    $bundles = [ 
        // ... 
        new Acme\OldBundle\AcmeOldBundle(), 
    ]; 
    

    An:

    $bundles = [ 
        // ... 
        new Acme\NewBundle\AcmeNewBundle(), 
    ]; 
    
  2. Umbenennen von Dateien und Ordnern

    Sie müssen die Dateien und Ordner enthält Code umbenennen:

    src/Acme/OldBundle -> src/Acme/NewBundle 
    src/Acme/OldBundle/OldBundle.php -> src/Acme/NewBundle/NewBundle.php 
    
    # If present 
    src/Acme/OldBundle/DependencyInjection/AcmeOldExtension.php -> src/Acme/NewBundle/DependencyInjection/AcmeNewExtension.php 
    
  3. Namespaces

    Dies wird wahrscheinlich mit zu vergessen ein paar Dateien und die Suche rund um Ihr Bündel gehen für jedes Spiel. Das Beste, was zu tun ist, tun ein findungs ​​ersetzen:

    # find -> replace 
    acme_old -> acme_new 
    Acme\OldBundle\ -> Acme\NewBundle 
    AcmeOld -> AcmeNew 
    Acme:Old -> Acme:New 
    Acme:OldBundle -> Acme:NewBundle 
    

    Seien Sie sicher, dass alle Namensräume, Klassennamen und Konfigurationsdateien in Ihrem Bündel zu überprüfen.

  4. Globale Konfigurationsdateien

    Suche nach jedem Auftreten des alten Paketnamen in app/config/ und ersetzen Sie es mit Ihrem neuen Paketnamen.

Verwandte Themen