IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Service ne se charge pas [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut Service ne se charge pas
    Bonjour,

    J'essaie de créer un service, mais apparemment il ne se charge pas.
    Dans mon IP/DataBaseBundle/Resources/config/services.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    services:
        ip_database.buildcity:
            class: IP\DataBaseBundle\Services\BuildCity
    Dans IP/DataBaseBundle/Services/BuildCity.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    namespace IP\DataBaseBundle\Services;
     
    class BuildCity {
        public function isTrue() {
            return true;
        }
    }
    Dans IP/DataBaseBundle/DependencyInjection/DataBaseExtension.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
     
    namespace IP\DataBaseBundle\DependencyInjection;
     
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\Config\FileLocator;
    use Symfony\Component\HttpKernel\DependencyInjection\Extension;
    use Symfony\Component\DependencyInjection\Loader;
     
    /**
     * This is the class that loads and manages your bundle configuration
     *
     * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
     */
    class DataBaseExtension extends Extension
    {
        /**
         * {@inheritDoc}
         */
        public function load(array $configs, ContainerBuilder $container)
        {
            $configuration = new Configuration();
            $config = $this->processConfiguration($configuration, $configs);
     
            $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            $loader->load('services.yml');
        }
    }

    Et quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    php app/console container:debug
    Il n'apparait pas dans la liste, et évidemment, à l'éxécution, erreur 500
    Est-ce que j'ai oublié quelque chose ?
    Merci.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut


    1er chose je te conseil de faire tes sevrices en xml.

    2eme chose : Fais tu un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->get('ip_database.buildcity');
    pour appeler ton service ?

    3eme chose: As tu vider ton cache ?

    As tu lu la doc => http://symfony.com/doc/current/book/...container.html ?

  3. #3
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    pourquoi conseil tu le xml pour les services ?

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    1- Pourquoi le XML ? Dans tous les cas, ça doit aussi marcher en yaml, non ?
    2- Dans mon controlleur je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $buildCity = $this->get("ip_database.buildcity");
    Et j'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $buildCity = $this->container->get("ip_database.buildcity");
    3- oui j'ai vidé le cache, ça ne change rien...
    Merci

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Parce que http://symfony.com/doc/current/cmf/c...g/bundles.html

    "Core configuration files MUST be in XML, this includes:
    Routing;
    Service definitions;
    Doctrine mappings;
    Translations (XLIFF format).
    In other cases XML should be preferred over other configuration formats where there is a choice."

    En gros, le xml est plus facile à lire, il y a une norme, et il est plus facile à parser.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Bon j'ai déplacé le contenu de mon fichier services.yml de mon bundle dans le fichier app/config/config.yml et ça marche
    Donc le problème est bien lié au fait qu'il ne charge pas le fichier services.yml de mon bundle
    mais pourquoi ?

  7. #7
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Citation Envoyé par prims Voir le message
    Parce que http://symfony.com/doc/current/cmf/c...g/bundles.html

    "Core configuration files MUST be in XML, this includes:
    Routing;
    Service definitions;
    Doctrine mappings;
    Translations (XLIFF format).
    In other cases XML should be preferred over other configuration formats where there is a choice."

    En gros, le xml est plus facile à lire, il y a une norme, et il est plus facile à parser.
    Tu mélanges un peu tout là. Tu es en train de citer les coding rules pour la contribution à un bundle bien particulier (le cmf bundle).

    @jejeman : aucun souci avec le yml on est bien d'accord.

    Au risque de poser des questions bateau, est-ce que ton bundle est bien déclaré dans ton kernel ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Je ne dis pas que le yaml n'est pas bon. Je dis juste que symfony dit que le xml est préférable.

    C'est tiré du cmf car j'ai pas sous le coude l'extrait qui le dit pour symfony. Bref

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Que retourne ?

  10. #10
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    @Nico: Dans mon AppKernel j'ai bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public function registerBundles()
        {
            $bundles = array(
                new IP\DataBaseBundle\IPDataBaseBundle(),
                ...
    @prims: $buildCity ne renvoie rien car c'est sur cette ligne qui bloque en disant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    You have requested a non-existent service "ip_database_buildcity".
    J'ai re-relu la page http://symfony.com/fr/doc/2.3/cookbo...extension.html mais je ne trouve pas...
    Si je mets un import dans mon fichier de config ça passe
    Par contre si j'essaie en créant la classe d'Extension, il prend pas e compte la conf.
    Merci de votre aide.

  11. #11
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 85
    Par défaut
    Peux tu supprimer physiquement ton cache ?

    Essaye de renommer le nom de ton service en toto. Normalement le "." ne gène pas...

    Sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            $loader->load('services.xml');
    Et donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" ?>
     
    <container xmlns="http://symfony.com/schema/dic/services"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
     
        <services>
            <service id="toto" class="IP\DataBaseBundle\Services\BuildCity" />
        </services>
     
    </container>

  12. #12
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    You have requested a non-existent service "ip_database_buildcity"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    services:
        ip_database.buildcity
    La on a pas la même clé.
    Mais bon si tu dis que dans le fichier config/config.yml ça tourne, à moins que tu l'aies retapé correctement sans faire de cc, c'est étrange.

    Le fait qu'il n'apparaisse pas dans le container:debug limite les possibilités. N'est-ce pas dans le nom du fichier services.yml qu'il y a une typo ? L'import ne se ferait pas correctement.
    Arrives tu à déclarer une autre service dans ce même fichier ?

    Éventuellement, fais une grosse erreur de syntaxe dans ton services.yml pour voir si le DIC gueule. Si ce n'est pas le cas, il y a des chances pour qu'il ne passe même pas sur ton fichier.

  13. #13
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    J'ai supprimé tout le contenu de app/cache/
    Ca ne change rien
    Et même renommé, toujours bloqué.
    Est-ce qu'il y a quelque chose à mettre quelque part pour lui dire de charger la classe Extension des bundles ?
    Ou c'est par défaut activé ?
    Merci.

  14. #14
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class DataBaseExtension extends Extension
    tu déclares un namespace data_base pour ton bundle.

    Essaie avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    services:
       data_base.buildcity:
          class: IP\DataBaseBundle\Services\BuildCity

  15. #15
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Ton extension est mal nommé au regard du namespace.

    As t'il été généré via la ligne de commande, ou bien est-ce un copier/coller?

    Essaie (évidemment, il faut renommer le fichier aussi..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     namespace IP\DataBaseBundle\DependencyInjection;
     //....
    class IPDataBaseExtension extends Extension
    {
        //...
    }
    puis vide le cache

  16. #16
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    Merci Arnoo !!!!
    C'était ça...
    Je me doutais que c'était une bourde de typo, mais je voyais pas...
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon service Windows ne marche pas
    Par laadhar dans le forum Langage
    Réponses: 9
    Dernier message: 01/02/2006, 18h13
  2. [winXP][plantage] ftlmgr.sys ne charge pas, qui la ?.
    Par arnolem dans le forum Windows XP
    Réponses: 10
    Dernier message: 10/06/2005, 17h35
  3. Réponses: 2
    Dernier message: 21/04/2005, 17h09
  4. Services Oracle ne démarre pas sans connexion réseau??
    Par dreamanoir dans le forum Oracle
    Réponses: 6
    Dernier message: 22/02/2005, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo