Mi paquete está situado en la src/Cinergy/Bundle/ComponentBundle/CinergyComponentBundle.php y el nombre lógico del paquete es 'CinergyComponentBundle'.

Ya que no se adhieren a la convención de nomenclatura de la empresa tengo que cambiar la logcial nombre del paquete. Permite asumir que tengo que cambiarle el nombre a 'XXXCinergyComponentBundle'

¿Qué archivos debo modificar?

He intentado cambiar el nombre de la CinergyComponentBundle.php y el archivo que contiene la clase en XXXCinergyComponentBundle.php. También he cambiado la referencia en el AppKernel.

Lamentablemente esto no funciona. Cuando intento borrar la caché me sale este mensaje de error:

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

Estos dos servicios no pertenecen a la agrupación con el nuevo nombre. Esto me lleva a la conclusión de que me estoy perdiendo de algo en el proceso de cambio de nombre.

Alguna idea?

Marque Esta Video

OriginalEl autor BetaRide | 2012-09-21

3 Comentarios

  1. 9

    Acabo de terminar cambiar el nombre de un paquete de mí mismo y terminamos en el mismo punto exacto como lo hizo un par de minutos. A este punto he utilizado mis editores reemplazar la función. Resulta que hay algunos archivos que necesitan algunos cuidados adicionales, que se encuentran aquí (asumiendo que su antiguo nombre del Lote fue AcmeOldBundle, nuevo será AcmeNewBundle):

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

    No te olvides de actualizar la clase de nombres dentro de los archivos.

    Sólo haciéndose eco de la anterior; editor/búsqueda reemplazar no cambiar el nombre de los archivos, que son fácilmente pasados por alto. Así que para estar seguro, utilice esto: find . -name '*AcmeOldExtension*' y, a continuación, cambiar manualmente el nombre de los archivos (que podría ser como el anterior).

    OriginalEl autor zebba

  2. 7

    Las actuales respuestas en efecto, explicar de qué hacer para cambiar el nombre de un paquete pero que deja de lado un par de cosas:

    1. Cambiar el nombre del paquete en el /app/AppKernel.php

      De:

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

      :

      $bundles = [
          //...
          new Acme\NewBundle\AcmeNewBundle(),
      ];
    2. Cambiar el nombre de archivos y carpetas

      Usted necesita para cambiar el nombre de los archivos y las carpetas que contienen el código:

      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. Espacios de nombres

      Esto probablemente se vaya con olvidar un par de archivos y busca alrededor de tu paquete para cada uno y cada partido. La mejor cosa a hacer es hacer un buscar-reemplazar:

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

      Asegúrese de comprobar todos los espacios de nombres, nombres de clases y archivos de configuración en el paquete.

    4. Los archivos de configuración Global

      Búsqueda de la aparición de su antiguo nombre de lote en app/config/ y reemplazarlo con el nuevo nombre de lote.

    OriginalEl autor Peter

  3. 3

    Que usted necesita para actualizar todo el espacio de nombres en cada uno de los archivos.

    Que estaba utilizando namespace Cynergy\ComponentBundle\Something; pero ahora estás usando namespace XXXCynergy\ComponentBundle\Something;

    No se olvide de actualizar su services.(xml|yml).

    Tal y como yo lo entiendo, esto no es correcto. Yo no soy de cambiar la ruta de acceso del paquete. Estoy cambiando solamente el nombre lógico.
    Entonces usted está equivocado, porque de PSR-0/1/2 es necesario asignar el espacio de nombres con el sistema de archivos, o configurar manualmente el cargador automático.
    Voy a cambiar el nombre de una clase y el archivo PHP solo. Yo no soy de cambiar el nombre de todo un espacio de nombres/directorio. Desde AppKernel happyly encuentra el nuevo nombre de la clase, dudo que haya un cargador automático/clase/problema de nombre de archivo.
    Mmm. Usted realmente debe comprobar por qué el DIC no puede cargar su servicio. Se le dice que no existe, ¿por qué no existe? Está correctamente definido en su configuración de servicios? ¿El servicio que existen en la realidad?

    OriginalEl autor Boris Guéry

Dejar respuesta

Please enter your comment!
Please enter your name here