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 :

Problème avec les namespaces !


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Problème avec les namespaces !
    hello,

    bon voilà, depuis ce matin j'ai un problème qui m'énerve trop, pourtant je vois pas ou est l'erreur exactement (tout me parait logique).

    J'essaye de créer une instance de type Ma forme (baptisée LoginInform) depuis mon controlleur.
    voici mon code:

    mon controlleur:

    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
     
    namespace composants\gestionBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use composants\gestionBundle\Form\LoginForm;
    use Symfony\Component\HttpFoundation\RedirectResponse;
     
     
    class DefaultController extends Controller
    {
     
        public function indexAction()
        {
            //return $this->render('gestionBundle:Default:index.html.twig', array('name' => $name));
    		$message ='Hello aujourdhui nous sommes le '.date("D/m/y");
    		// login module
    		$f = new LoginForm();
    	    $laform = $f->builderloginForm()->createView();
    		//fin login module
     
    		return $this->container->get('templating')->renderResponse('gestionBundle:Default:accueil.html.twig',array('message' => $message, 'login' => $laform)
    		                                                          );
     
     
        }
    }
    ma classe form:

    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
     
    <?php
    namespace composants\gestionBundle\Form;
     
    use Symfony\Component\Form\FormBuilder;
    use Symfony\Component\Form\AbstractType;
     
     
     
    class LoginForm
    {
      public function builderloginForm(){
     
      $formBuilder = $this->createFormBuilder();
      $formBuilder
               ->add('login','text')
    		   ->add('pass', 'password');
     
    		   return $formBuilder->getForm();
     
      }
    }
    l'erreur que j'ai:
    Fatal error: Class 'composants\gestionBundle\Form\LoginForm' not found in C:\wamp\www\ecommerce\Symfony\src\composants\gestionBundle\Controller\DefaultController.php on line 18

    Si quelqu'un peut m'aider ça serait sympa de sa part.

  2. #2
    Membre régulier Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    Points : 118
    Points
    118
    Par défaut
    Salut,

    Il te manque ceci à ta classe form:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    extends AbstractType
    Bonne journée !
    "Rather than love, than monney, than faith, than
    fame, than fairness, give me truth."

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    ReBonjour,

    merci de votre réponse khand mais ça ne résolu toujours pas mon problème
    j'ai remarqué que problème concerne aussi d'autre classe (quand j'essaye de créer une autre instance d'une autre classe par ex: client ou commande, toujours le même problème qui persiste).

    Franchement ça me rend dingue...

    Merci quand même pour votre réponse.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    J'ai l'impression qu'il n'y a rien de correcte dans tout ça

    Voici un exemple de formulaire

    As tu lu le book de sf ?

    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
     
    //Form\CommentType.php
    <?php
     
    namespace MaSociete\BenevoleBundle\Form;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class CommentType extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
                ->add('name')
                ->add('created')
                ->add('updated')
            ;
        }
     
        public function getName()
        {
            return 'masociete_benevolebundle_commenttype';
        }
    }
    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
    <?php
     
    namespace MaSociete\BenevoleBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
    use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
    use MaSociete\BenevoleBundle\Entity\Comment;
    use MaSociete\BenevoleBundle\Form\CommentType;
     
    /**
     * Comment controller.
     *
     * @Route("/comment")
     */
    class CommentController extends Controller
    {
    public function newAction()
        {
            $entity = new Comment();
            $form   = $this->createForm(new CommentType(), $entity);
     
            return array(
                'entity' => $entity,
                'form'   => $form->createView()
            );
        }

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Bonjour,

    Il est de bonne augure de respecter les majuscules pour les namespaces, question d'uniformité..

    De plus, la racine d'un namespace doit être déclarée dans l'autoload de Sf2 (app/autoload.php), qu'avez-vous dans ce fichier ?
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Rebonjour les amis,
    tout d'abord merci de vos réponses.

    @jfsenechal: j'ai déjà essayé avec cette méthode auparavant (héritage de AbstractType), toujours la même erreur, par contre quand je crée ma forme directement depuis mon controlleur aucun problème.
    et voici un exemple d'une méthode de mon controlleur:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
     public function inscriAction()
        {
    	   $cl = new client();
     
    	   $formBuilder = $this->createFormBuilder($cl);
           $formBuilder
               ->add('nom','text')
    		   ->add('login','text')
    		   ->add('passwd', 'password');
    		   //->add('Prenom','text');
     
     
    		   $f = $formBuilder->getForm();
     
    		   /** Post données **/
    		   $request = $this->container->get('request');
     
    		   if ($request->getMethod() == 'POST') 
               {
                $f->bindRequest($request);
    			if ($f->isValid()) 
                 {
                  $em = $this->container->get('doctrine')->getEntityManager();
                  $em->persist($cl);
                  $em->flush();
                  $message='Client ajouté avec succès !';
                 }
               }
     
    		   /** Fin Post données **/
     
     
    	       $forminsc = $f->createView();
     
     
    		return $this->container->get('templating')->renderResponse('gestionBundle:Default:inscription.html.twig',array('inscription' => $forminsc)
    		                                                           );
     
        }
    ça marche sans problème, mais moi j'ai besoin de séparer ma forme de mon controlleur...

    @pc.bertineau: c'est ce que je pense aussi, sinon voici le code de mon fichier autoload:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
     
    use Symfony\Component\ClassLoader\UniversalClassLoader;
    use Doctrine\Common\Annotations\AnnotationRegistry;
     
    $loader = new UniversalClassLoader();
    $loader->registerNamespaces(array(
        'Symfony'          => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
        'Sensio'           => __DIR__.'/../vendor/bundles',
        'JMS'              => __DIR__.'/../vendor/bundles',
        'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
        'Doctrine\\DBAL'   => __DIR__.'/../vendor/doctrine-dbal/lib',
        'Doctrine'         => __DIR__.'/../vendor/doctrine/lib',
        'Monolog'          => __DIR__.'/../vendor/monolog/src',
        'Assetic'          => __DIR__.'/../vendor/assetic/src',
        'Metadata'         => __DIR__.'/../vendor/metadata/src',
    ));
    $loader->registerPrefixes(array(
        'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',
        'Twig_'            => __DIR__.'/../vendor/twig/lib',
    ));
     
    // intl
    if (!function_exists('intl_get_error_code')) {
        require_once __DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';
     
        $loader->registerPrefixFallbacks(array(__DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs'));
    }
     
    $loader->registerNamespaceFallbacks(array(
        __DIR__.'/../src',
    ));
    $loader->register();
     
    AnnotationRegistry::registerLoader(function($class) use ($loader) {
        $loader->loadClass($class);
        return class_exists($class, false);
    });
    AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
     
    // Swiftmailer needs a special autoloader to allow
    // the lazy loading of the init file (which is expensive)
    require_once __DIR__.'/../vendor/swiftmailer/lib/classes/Swift.php';
    Swift::registerAutoload(__DIR__.'/../vendor/swiftmailer/lib/swift_init.php');

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    ça marche sans problème, mais moi j'ai besoin de séparer ma forme de mon controlleur...
    Que veux tu dire par là

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Citation Envoyé par Guerr Voir le message
    @pc.bertineau: c'est ce que je pense aussi, sinon voici le code de mon fichier autoload:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    
    use Symfony\Component\ClassLoader\UniversalClassLoader;
    use Doctrine\Common\Annotations\AnnotationRegistry;
    
    $loader = new UniversalClassLoader();
    $loader->registerNamespaces(array(
        'Symfony'          => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
        'Sensio'           => __DIR__.'/../vendor/bundles',
        'JMS'              => __DIR__.'/../vendor/bundles',
        'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
        'Doctrine\\DBAL'   => __DIR__.'/../vendor/doctrine-dbal/lib',
        'Doctrine'         => __DIR__.'/../vendor/doctrine/lib',
        'Monolog'          => __DIR__.'/../vendor/monolog/src',
        'Assetic'          => __DIR__.'/../vendor/assetic/src',
        'Metadata'         => __DIR__.'/../vendor/metadata/src',
        'composants'    => __DIR__.'/../src',
    ));
    $loader->registerPrefixes(array(
        'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',
        'Twig_'            => __DIR__.'/../vendor/twig/lib',
    ));
    
    // intl
    if (!function_exists('intl_get_error_code')) {
        require_once __DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs/functions.php';
    
        $loader->registerPrefixFallbacks(array(__DIR__.'/../vendor/symfony/src/Symfony/Component/Locale/Resources/stubs'));
    }
    
    $loader->registerNamespaceFallbacks(array(
        __DIR__.'/../src',
    ));
    $loader->register();
    
    AnnotationRegistry::registerLoader(function($class) use ($loader) {
        $loader->loadClass($class);
        return class_exists($class, false);
    });
    AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
    
    // Swiftmailer needs a special autoloader to allow
    // the lazy loading of the init file (which is expensive)
    require_once __DIR__.'/../vendor/swiftmailer/lib/classes/Swift.php';
    Swift::registerAutoload(__DIR__.'/../vendor/swiftmailer/lib/swift_init.php');

    Pour moi il faut ajouter la ligne en gras et rouge, en supposant que le dossier "composants" soit placé sous src... Et mettez des majuscules tout de suite, avant de faire grossir le projet
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    @jfsenechal: si je n'utilise pas le namespace pour faire appel à ma form ça marche sans problème, autrement dit si je l'implémente directement dans mon controlleur.

    @pc.bertineau: j'ai essayé d'ajouter la ligne concernée, mais toujours le même problème qui persiste

    je comprend pas...

    Merci en tous cas.

  10. #10
    Membre éclairé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Points : 872
    Points
    872
    Par défaut
    Tu peux nous montrer l'arborescence de ton projet, et notamment le dossier "composants" ?
    • Mon blog PHP : http://blog.alterphp.com
    • "Peace cannot be kept by force, it can only be achieved by Understanding" -- Albert Einstein

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Rebonjour,

    le dossier composants contient 2 Bundle à savoir:
    gestionBundle
    et UtilisateurBundle

    le bundle en question est le "gestionBundle"

    gestionBundle
    -...
    -Entity
    -Form:
    =>inscription.php
    =>loginModule.php

    Merci encore une fois.

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/04/2012, 16h26
  2. [JAXB] JAXB 1.0 Problème avec les namespaces
    Par ekremyilmaz dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 30/05/2011, 18h04
  3. [DOM] Problème avec les namespaces
    Par clincks dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/06/2006, 20h40
  4. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44
  5. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59

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