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 :

Commande d'accès au contrôleur [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut Commande d'accès au contrôleur
    Bonjour,

    J'ai créé une command symfony avec différents arguments
    je souhaite accéder à mon contoller mais lorsque j'appelle une function j'ai des erreurs

    mes erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    PHP Fatal error:  Call to a member function has() on a non-object in D:\wamp\www\extract\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Controller\Controller.php on line 191
    PHP Stack trace:
    PHP   1. {main}() D:\wamp\www\extract\app\console:0
    PHP   2. Symfony\Component\Console\Application->run() D:\wamp\www\extract\app\console:25
    PHP   3. Symfony\Bundle\FrameworkBundle\Console\Application->doRun() D:\wamp\www\extract\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:105
    PHP   4. Symfony\Component\Console\Application->doRun() D:\wamp\www\extract\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:78
    PHP   5. Symfony\Component\Console\Command\Command->run() D:\wamp\www\extract\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:192
    PHP   6. Test\MonBundle\Command\LaunchExtractCommand->execute() D:\wamp\www\extract\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:238
    PHP   7. Test\MonBundle\Controller\ExtractController->launchAction() D:\wamp\www\extract\src\Test\MonBundle\Command\LaunchExtractCommand.php:57
    PHP   8. Symfony\Bundle\FrameworkBundle\Controller\Controller->getDoctrine() D:\wamp\www\extract\src\Test\MonBundle\Controller\ExtractController.php:101
    Mon controller

    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
     
    namespace Test\TestBundle\Command;
     
    use Symfony\Component\Console\Command\Command;
    use Symfony\Component\Console\Input\InputArgument;
    use Symfony\Component\Console\Input\InputInterface;
    use Symfony\Component\Console\Input\InputOption;
    use Symfony\Component\Console\Output\OutputInterface;
    use Test\TestBundle\Controller\MonController;
     
    .........
     
     protected function execute(InputInterface $input, OutputInterface $output)
        {
            $array_param   = array();
            $array_mail     = array();
     
     
            $mail = $input->getOption('mail');
            $array_mail = explode(',',$mail[0]);
     
            $param = $input->getOption('param');
            $array_param = explode(',',$param[0]);
     
            $action= new MonController();
            $action->lancerAction();
     
        }
    Comment faire pour accéder à mon controller existant?

    Merci d'avance

  2. #2
    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
    Bonjour,

    D'une façon générale ce n'est pas une bonne idée de vouloir accéder à un controller depuis une commande (et vice-versa d'accéder à une commande depuis un controller).
    Il faut plutôt créer un service qui effectue les traitements, et appeler celui-ci depuis ton controller et/ou ta commande.

    l'erreur que tu as vient du fait que tu instancies un controller mais que tu ne lui injectes pas le container, hors ta méthode lancerAction contient un $this->get('doctrine') (qui est un simple raccourci vers $this->container->get('doctrine'), cf https://github.com/symfony/symfony/b...ller.php#LC243)

    Le problème n'est donc pas tellement d'accéder à ton controller, mais d'accéder au container ( et donc par la suite à l'entityManager de Doctrine), pour cela vérifie de quel classe hérite ta classe commande.
    http://symfony.com/doc/2.0/cookbook/...vice-container

  3. #3
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Bonsoir,

    Besoin, d'une petite précision, l'action du controller, a t elle besoin d'être appeler par la command ? ou est ce que la raison, c'est que tu ne vois pas comment faire ce que tu fais dans le controller depuis une command ?

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Messieurs
    Merci pour vos remarques

    En fait je souhaite passer pour mon controller car je souhaite récupérer ce qui a été développé en amont,
    Je vais regarder pour passer par un service

    pouvez vous me dire pourquoi il ne faut pas appeler un controller depuis une commande et vice versa SVP ? car un moment donné il faut bien que ma commande communique avec mon controller

    Merci d'avance pour vos recommandations

  5. #5
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2011
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2011
    Messages : 477
    Par défaut
    Bonjour,

    Ce n'est pas une bonne méthode développement.

    1 er possibilité.

    Tu développes une classe Utils, où dedans tu y mets ta fonction métier, celle que tu as besoin et dans la command et dans le controller.

    2 eme possibilité qui est une extension de la première et donc plus puissante.

    Tu prends cette classe Utils et tu en fait un service ce qui te permet d'injecter d'autres services dans le service, tel que doctrine, monolog, etc.

    Ce qui permets une chose importante, épuré les controller et les command.

    En tout cas je le vois comme ça.

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 50
    Par défaut
    Citation Envoyé par stephan.78 Voir le message
    Bonjour,

    Ce n'est pas une bonne méthode développement.

    1 er possibilité.

    Tu développes une classe Utils, où dedans tu y mets ta fonction métier, celle que tu as besoin et dans la command et dans le controller.

    2 eme possibilité qui est une extension de la première et donc plus puissante.

    Tu prends cette classe Utils et tu en fait un service ce qui te permet d'injecter d'autres services dans le service, tel que doctrine, monolog, etc.

    Ce qui permets une chose importante, épuré les controller et les command.

    En tout cas je le vois comme ça.
    Ok je vais regarder cela de plus prêt
    Merci pour tes conseils

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

Discussions similaires

  1. [ZF 1.10] Accès aux contrôleurs
    Par levalp dans le forum Zend Framework
    Réponses: 6
    Dernier message: 16/07/2010, 08h17
  2. Accès aux contrôleurs divers
    Par ArKam dans le forum C++
    Réponses: 7
    Dernier message: 03/06/2010, 22h12
  3. [AC-2007] Comment coder les boutons de commandes sous acces 2007
    Par njcom dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/07/2009, 17h37
  4. Réponses: 24
    Dernier message: 14/03/2007, 15h45
  5. Réponses: 3
    Dernier message: 22/04/2006, 06h05

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