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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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 confirmé Avatar de khand
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 120
    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 !

  3. #3
    Membre averti
    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
    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 éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    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 émérite

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    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 ?

  6. #6
    Membre averti
    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
    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');

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 Invité 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