11

私のバンドルは にsrc/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.phpあり、バンドルの論理名は です'CinergyComponentBundle'

会社の命名規則に固執しなかったため、バンドルの論理名を変更する必要があります。名前を変更する必要があると仮定しましょう'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 つのサービスは、新しい名前のバンドルに属しています。これにより、名前の変更プロセスで何かが欠けているという結論に至ります。

何か案は?

4

3 に答える 3

9

バンドルの名前変更を自分で完了したところ、数分前に行ったのとまったく同じポイントになりました。ここまで、エディタの replace-function を使用してきました。特別な注意が必要なファイルがいくつかあることがわかりました。これらのファイルは次の場所にあります (古いバンドル名が AcmeOldBundle であると仮定すると、新しいバンドルは AcmeNewBundle になります)。

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

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

于 2012-12-17T09:05:43.410 に答える
7

現在の回答は、バンドルの名前を変更するために何をすべきかを実際に説明していますが、いくつかのことを省略しています。

  1. バンドルの名前を変更します/app/AppKernel.php

    から:

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

    に:

    $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/、新しいバンドル名に置き換えます。

于 2016-12-30T10:31:56.173 に答える
3

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

使ってnamespace Cynergy\ComponentBundle\Something;いたが、今は使っているnamespace XXXCynergy\ComponentBundle\Something;

を更新することを忘れないでくださいservices.(xml|yml)

于 2012-09-21T08:58:43.030 に答える