2012-09-21 4 views
11

私のバンドルはsrc/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.phpにあり、バンドルの論理名は'CinergyComponentBundle'です。symfonyでバンドルの名前を変更するには?

私は会社の命名規則に従わなかったので、バンドルの論理名を変更する必要があります。私はそれを名前に変更する必要があります。'XXXCinergyComponentBundle'

どのファイルを変更する必要がありますか?

CinergyComponentBundle.phpファイルとそれを含むクラスの名前をXXXCinergyComponentBundle.phpに変更しようとしました。 AppKernelのリファレンスも変更しました。

残念ながら、これは機能しません。キャッシュをクリアしようとすると、次のエラーメッセージが表示されます。

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

この2つのサービスは、新しい名前のバンドルに属しています。これは、名前変更プロセスで何かが欠けているという結論につながります。

アイデア?

+0

この[ビデオ](https://www.youtube.com/watch?v=ldyUhirsrNo)は –

答えて

3

各ファイルの名前空間全体を更新する必要があります。

あなたはnamespace Cynergy\ComponentBundle\Something;を使用していたが、あなたは今、あなたのservices.(xml|yml)を更新することを忘れないでくださいnamespace XXXCynergy\ComponentBundle\Something;

を使用しています。

+0

私の知る限り理解し、これが正しくないことを確認します。私はバンドルのパスを変更していません。私は論理名だけを変更しています。 – BetaRide

+3

PSR-0/1/2のためにネームスペースをファイルシステムにマップするか、オートローダを手動で設定する必要があるので間違っています。 –

+0

私は1つのクラスの名前を変更しています。これはPHPファイルのみです。私は名前空間/ディレクトリ全体の名前を変更していません。 AppKernelは名前が変更されたクラスを見つけたので、オートローダ/クラス/ファイル名の問題があるとは思わない。 – BetaRide

9

自分でバンドルの名前を変更して完了しましたが、数分前とまったく同じ時点で終了しました。この時点で、私はエディタ置換機能を使用しました。それはここにありますいくつかの余分なケア、必要があるいくつかのファイルがある判明(古いバンドル名がAcmeOldBundleだったと仮定するとは、新しいはAcmeNewBundleになります):

  1. アクメ\ OldBundle \ OldBundle.php - > NewBundle.php
  2. アクメ\ OldBundle \依存性の注入\ AcmeOldExtension.php - > AcmeNewExtension.php

だけでなく、ファイル内のクラス名を更新することを忘れないでください。

+1

上記をエコーし​​ます。 editor/search replaceは、見落としやすいファイルの名前を変更しません。ですから、これを使用してください: 'find。 -name '* AcmeOldExtension *' 'を実行し、手動でファイルの名前を変更します(これは上記のとおりです)。 – fazy

7

現在の答えは確かにバンドルの名前を変更するために何をすべきかを説明しますが、彼らはいくつかのことを除外:

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

  1. はより/app/AppKernel.php

    にバンドルの名前を変更しますTo:

    $bundles = [ 
        // ... 
        new Acme\NewBundle\AcmeNewBundle(), 
    ]; 
    
  2. あなたはあなたのコードを含むファイルやフォルダの名前を変更する必要があるファイルとフォルダ

    名の変更:

    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. 名前空間

    は、これはおそらく、いくつかのファイルを忘れて、あなたのバンドルの周りに検索して行きますそれぞれの試合ごとに

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

    バンドル内のすべての名前空間、クラス名、および設定ファイルを必ず確認してください。

  4. グローバルコンフィギュレーションファイル

    app/config/で古いバンドル名のいずれかの発生を検索し、新しいバンドル名に置き換えます。

関連する問題