Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Instalar StofDoctrineExtensionsBundle manualmente

Estas en el tema de Instalar StofDoctrineExtensionsBundle manualmente en el foro de Symfony en Foros del Web. Hola, necesito ayuda para instalar StofDoctrineExtensionsBundle de forma manual en symfony 2.8, tiene que ser de esta manera, porque mi acceso a internet es muy ...
  #1 (permalink)  
Antiguo 06/09/2016, 21:27
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Instalar StofDoctrineExtensionsBundle manualmente

Hola, necesito ayuda para instalar StofDoctrineExtensionsBundle de forma manual en symfony 2.8, tiene que ser de esta manera, porque mi acceso a internet es muy limitado. Es decir qué versión de doctrine-extensions debería instalar para el Doctrine que viene integrado a symfony 2.8, y bueno una idea de cómo instalarlo. Es que necesito exactamente manipular una estructura organizativa en forma de arbol.
Créanme cuando digo que mi acceso a internet es pésimo, no estoy jugando ni deseando que me hagan la tarea. Por suerte tengo acceso a este foro y a github.
  #2 (permalink)  
Antiguo 10/09/2016, 08:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Instalar StofDoctrineExtensionsBundle manualmente

Bueno aun continuo sin poder configurar adecuadamente las extensiones de doctrine.
Obtuve la version 2.4.22, e intenté configurarla a través del fichero de ayuda que trae el paquete, específicamente para symfony2, es decir sin emplear el StofDoctrineExtensionsBundle

seguí los pasos y solamente active la extensión tree, pero al limpiar la cache por ejemplo, me arroja el siguiente error:
Fatal error: Class 'Gedmo\Tree\TreeListener' not found in C:\xampp\htdocs\pami2.local\app\cache\dev\appDevDe bugProjectContainer.php on line 1498

y ese mismo error por supuesto, me salta al intentar cargar la app, o correr algún comando.

Alguna idea ??!?!?!. Probé con la versión 2.3.1 del paquete DoctrineExtensions y me salta el mismo error.

Revisando el fichero dev.log encuentro que el error anterior se registra de la siguiente forma:
Código log:
Ver original
  1. [2016-09-10 17:38:46] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ClassNotFoundException: "Attempted to load class "TreeListener" from namespace "Gedmo\Tree". Did you forget a "use" statement for another namespace?" at C:\xampp\htdocs\pami2.local\app\cache\dev\appDevDebugProjectContainer.php line 1498 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ClassNotFoundException(code: 0): Attempted to load class \"TreeListener\" from namespace \"Gedmo\\Tree\".\nDid you forget a \"use\" statement for another namespace? at C:\\xampp\\htdocs\\pami2.local\\app\\cache\\dev\\appDevDebugProjectContainer.php:1498)"} []
  2. [2016-09-10 17:38:47] request.CRITICAL: Exception thrown when handling an exception (Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException: Circular reference detected for service "doctrine.orm.default_entity_manager", path: "doctrine.orm.default_entity_manager -> doctrine.dbal.default_connection -> gedmo.listener.tree". at C:\xampp\htdocs\pami2.local\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Container.php line 281) {"exception":"[object] (Symfony\\Component\\DependencyInjection\\Exception\\ServiceCircularReferenceException(code: 0): Circular reference detected for service \"doctrine.orm.default_entity_manager\", path: \"doctrine.orm.default_entity_manager -> doctrine.dbal.default_connection -> gedmo.listener.tree\". at C:\\xampp\\htdocs\\pami2.local\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\DependencyInjection\\Container.php:281)"} []

No entiendo por qué una excepcion de este tipo cuando configuro la extension tree como explica la documentación del paquete DoctrineExtensions

Última edición por X_fran; 10/09/2016 a las 08:46 Razón: Argumentando
  #3 (permalink)  
Antiguo 13/09/2016, 22:04
 
Fecha de Ingreso: enero-2013
Ubicación: Santa Fe, VT
Mensajes: 68
Antigüedad: 11 años, 2 meses
Puntos: 2
Respuesta: Instalar StofDoctrineExtensionsBundle manualmente

Lo mejor que podes hacer es intentar conectarte a Internet para usar composer, podes descargar la libreria pero con eso no resolverías los problemas de dependencias.
Tendrías que bajar:
behat/transliterator
gedmo/doctrine-extensions,
stof/doctrine-extensions-bundle
de github, luego con la opción "artifact" de composer, aqui hay una respuesta que te puede guiar si sabes algo de composer. con eso podrías hacerlo pero con lo simple de solo conectarte a Internet y teclar un comando no lo veo viable.
  #4 (permalink)  
Antiguo 15/09/2016, 14:39
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Instalar StofDoctrineExtensionsBundle manualmente

molinasergio91 gracias por responder.
Existen dos vías para instalar las extensiones de doctrine, una haciendo uso del stofDoctrineExtensionsBundle, y la otra sería configurando directamente el paquete DoctrineExtensions. La primera opción para mi no es viable, por la conexión a internet, la otra es siguiendo los pasos que vienen en la ayuda de DoctrineExtensions en el fichero symfony2.md. Yo intenté además esa segunda opción, que básicamente consiste en registrar en el app/config/config.yml las extensiones que se quieren instalar, y copiar para la carpeta /vendor la librería; a mi entender siguiendo la ruta /vendor/gedmo/doctrine-extensions/lib/Gedmo

Creo que me falta algún paso, no se si registrar en la ruta de la librería en /vendor/composer/autoload_namespace.php u otra, porque la realidad que de esta forma me salta un Fatal Error con una clase que no encuentra de la extension Uploadable, que realmente no me interesa utilizar y que por supuesto no registro en el app/confog/config.yml,
y por supuesto cuando agrego alguna anotación a una Entity, pue sno se reconoce el namespace Gedmo. Así que es otro error de registro de namespaces o clases.

En el caso de emplear el segundo método de instalación, en la ayuda de la lirebría DoctrineExtensions no explica acerca del uso de behat/transliterator.
  #5 (permalink)  
Antiguo 19/09/2016, 11:50
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Instalar StofDoctrineExtensionsBundle manualmente

Weno tengo que dar el tema por solucionado, al final terminé configurando DoctrineExtensions sin el uso del bundle. Estoy más que convencido que será a muy pocas personas les corresponda configurar un bundle manualmente.
La solución:
copiar la carpeta Gedmo que viene incluida en DoctrineExtensions.zip para el directorio /vendor/gedmo/doctrine-extensions/lib y esta ruta registrarla en el fichero app/autoload.php de la aplicación, justamente delante de la sentencia return:
$loader->add('Gedmo', __DIR__.'/../vendor/gedmo/doctrine-extensions/lib/');

con esto garantizamos que se cargue de forma global las clases de la librería Gedmo.

solo resta configurar en app/config/config.yml bajo la clave orm de doctrine:
#app/config/config.yml
Código:
orm:
        auto_generate_proxy_classes: "%kernel.debug%"        
        entity_managers:
            default: #the whole application entity manager
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                mappings:                   
                    tree:
                        type: annotation
                        alias: Gedmo
                        prefix: Gedmo\Tree\Entity
                        dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Tree/Entity"
y en ese mismo fichero agregar un import a un fichero doctrine_extensions.yml en el mismo directorio app/config/
Código:
imports:
    - { resource: doctrine_extensions.yml }
que contendrá el registro de los listeners de la librería, en mi caso solo necesito por ahora el behaviour Tree, así que el fichero quedaría de la siguiente forma

#app/config/doctrine_extensions.yml
Código:
services:
gedmo.listener.tree:
        class: Gedmo\Tree\TreeListener
        tags:
            - { name: doctrine.event_subscriber, connection: default }
        calls:
            - [ setAnnotationReader, [ "@annotation_reader" ] ]
en caso de necesitarse el behaviour Translatable, este tiene una dependencia con behat/transliterator, es necesario descargarlo y agregarlo al autoload, o pudiera ser que cambiándole el namespace al mismo de las extensiones de doctrine funcione, eso no lo he probado aun, no estoy del todo seguro.

Existen otros behaviours que necesitan inyectarle dependencias, para acceder al ORM o al usuario, por lo tanto es necesario crearlas, pero para ese caso est'a muy bien explicado en la ayuda incluida en DoctrineExtensions.zip.

Hasta ahora me ha funcionado correctamente los mapping de la librería.

Etiquetas: manualmente
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:07.