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 :

Répertoire trouvé mais pas la classe


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut Répertoire trouvé mais pas la classe
    Bonjour,

    J'aimerais savoir s'il y a une personne qui aurait déjà rencontré le problème suivant :

    "The autoloader expected class "MyApp\tdbdepBundle\Controller\ProductionController" to be defined in file "C:\wamp\www\Symfony2\app/../src\MyApp\tdbdepBundle\Controller\ProductionController.php". The file was found but the class was not in it, the class name or namespace probably has a typo."

    Dans mon controller, j'y inclus l'appelle d'une classe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    namespace MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm;
    Et voici ma class (JournalieredateRechercheForm.php)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    namespace MyApp\tdbdepBundle\Form\Production;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class JournalieredateRechercheForm extends AbstractType
    {
    ....
    }
    Depuis ce matin je cherche d'où l'erreur peu provenir mais je bute.

    Un petit coup de pouce me serait très utile svp.
    Merci

  2. #2
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    Dans mon controller, j'y inclus l'appelle d'une classe avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    namespace MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm;

    tu veux dire que le namespace de ton controller est

    namespace MyApp\tdbdepBundle\Controller;
    et que tu inclus la classe avec :
    use MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm;
    ??

  3. #3
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    418
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 418
    Points : 828
    Points
    828
    Par défaut
    Pour moi, le problème de l'erreur est sans lien avec le code que tu postes.
    Il vient plutôt du contrôleur qui n'est sans doute pas placé correctement par rapport au namespace déclaré... Ou bien il y a une faute dans le nom de la classe...

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Excusez moi pour les termes mais je débute avec symfony et a vrai dire j'ai encore pas mal de difficulté.

    J'ai bien mon controller (ProductionController.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
     
    namespace MyApp\tdbdepBundle\Controller;
    namespace MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
    use Symfony\Component\HttpFoundation\Response;
    use Doctrine\ORM\Query\ResultSetMapping;
    use Doctrine\ORM\EntityRepository;
     
    class ProductionController extends Controller 
    {
    	public function JournalieredateAction() {
    		$form = $this->container->get('form.factory')->create(new JournalieredateRechercheForm());
     
    		return $this->container->get('templating')->renderResponse('MyApptdbdepBundle:Production:Journalieredate.html.twig', array(
    			'secteur' => $secteur,
    			'form' => $form->createView()
    		));	
     
    }
    }
    Donc dans ce controller, j'appelle une class qui est create(new JournalieredateRechercheForm()) qui se trouve dans mon fichier JournalieredateRecherche.php

    C'est pour cela que je l'inclus au début.

    Et voici ma class :

    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 MyApp\tdbdepBundle\Form\Production;
     
    use Symfony\Component\Form\AbstractType;
    use Symfony\Component\Form\FormBuilder;
     
    class JournalieredateRechercheForm extends AbstractType
    {
        public function buildForm(FormBuilder $builder, array $options) {        
            $builder->add('nomSecteur', 'entity',array(
    						'class' => 'MyApptdbdepBundle:Secteur',
    						'property' => 'nomSecteur',
    						'multiple' => false,
    						'empty_value' => '- - - - - - - - - - -',
    						'query_builder' => function(EntityRepository $eb) {
    											return $eb->createQueryBuilder('sec')
    													->orderBy('sec.nomSecteur', 'ASC');
    											}
    						))
    				->add('nomDt', 'choice', array('label' => 'DT'))
    				->add('nomUt', 'choice', array('label' => 'UT'))
    				->add('nomCorbeille', 'choice', array('label' => 'Corbeille'))
    				->add('nomAgent', 'choice', array('label' => 'Corbeille'));
        }
     
        public function getName() {        
            return 'journalieredaterechercheform';
        }
    }
    EDIT : Bon et bien c'était vraiment une erreur toute bête.
    En effet au lieu de mettre USE j'avais mis NAMESPACE.

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    EDIT : Bon et bien c'était vraiment une erreur toute bête.
    En effet au lieu de mettre USE j'avais mis NAMESPACE.
    C'est ce que je disais dans mon post

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par L0rD59 Voir le message
    C'est ce que je disais dans mon post
    Oui c'est grace à toi que je m'en suis rendu compte.

    En tout cas merci à vous deux.
    Bon maintenant j'obtiens une autre erreur mais je vais un peu chercher avant de vous ennuyer de nouveau

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Je rencontre encore une erreur. Malheur à mon responsable qui souhaite que j'utilise synfony

    Voici le message d'erreur :

    Catchable Fatal Error: Argument 1 passed to MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm::MyApp\tdbdepBundle\Form\Production\{closure}() must be an instance of MyApp\tdbdepBundle\Form\Production\EntityRepository, instance of Doctrine\ORM\EntityRepository given, called in C:\wamp\www\Symfony2\vendor\symfony\src\Symfony\Bridge\Doctrine\Form\ChoiceList\EntityChoiceList.php on line 102 and defined in C:\wamp\www\Symfony2\src\MyApp\tdbdepBundle\Form\Production\JournalieredateRechercheForm.php line 15
    Si je comprend bien, il me met que j'ai une erreur dans ma fonction builder au niveau du query_builder.

    Or je l'ai déjà utilisé dans un autre test directement dans mon controller et ca fonctionné.

    Je trouve tout de même synfony tordue

    EDIT : Bon encore une fois, je suis allé trop vite et j'avais oublié de déclarer l'import de use Doctrine\ORM\EntityRepository;

  8. #8
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 47
    Points : 52
    Points
    52
    Par défaut
    Fait voir le code sa sera plus facile pour t'aider.

    Controller, FormType, etc...

  9. #9
    Invité
    Invité(e)
    Par défaut


    Symfony2 n'est pas tordu, tu n'es juste pas habitué à l'utilisation des namespaces introduits en PHP 5.3

    Ici c'est l'erreur typique : Sf2 te dit qu'il attend un objet implémentant une certaine interface, tu lui passes mais il ne la reconnaît pas : normal, tu as oublié de lui dire dans quel namespace cette interface "EntityRepository" se trouve, du coup il la cherche dans le namespace courant ("MyApp\tdbdepBundle\Form\Production").

    Tu n'as qu'à indiquer à PHP que cette interface se situe dans le namespace "Doctrine\ORM" (via une directive "use" en tête du fichier de ta classe), et il la trouvera

    Un peu de doc là-dessus : http://fr2.php.net/manual/fr/language.namespaces.php

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    J'ai encore une petite question, est il possible de récupérer seulement les balises <option> d'un formulaire?

    En réalité je souhaiterais utiliser de l'Ajax pour mettre à jours une liste selon une autre et par conséquence, pour désigner mon Select je suis obligé de mettre un nom à mon select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <select class="AjaxSecteur" STYLE="width:100px" name="Secteur">
    		{{ form_widget(form.nomSecteur).option }}
    </select>
    Je sais que ca ne fonctionne pas mais je recherche quelques choses de ce genre.

  11. #11
    Invité
    Invité(e)
    Par défaut
    Là je pense que tu vas être obligé de récupérer en AJAX non pas les éléments <option> mais juste leur contenu : un tableau associatif de clés/valeurs, que tu transmets à ton Javascript en JSON. De cette manière, en JS côté client tu crées tes éléments <option>. Il y a peut-être une manière plus élégante de faire mais je ne la connais pas.

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    C'est ce que j'avais fait, mais le hic c'est que j'ai des listes de 1500 éléments

    Pas trop le temps de traitement.

    Je vais tester avec des listes séparés et tenter d'appeler une fonction php en javascript.

  13. #13
    Invité
    Invité(e)
    Par défaut
    De toute façon avec des listes aussi grosses, l'expérience utilisateur est trop mauvaise même avec des <select> classiques. Ce qu'il te faut c'est un champ texte et de l'auto-complétion en AJAX

  14. #14
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Hello,

    Je reviens vers vous car je bloque avec la méthode Json.
    Lorsque je selectionne un secteur dans mon sélect, j'obtiens le message en javascrip suivant : objet attendu.

    Avez vous une idée svp?

    Mon code html
    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
     
    	<form method="post">
        <td>  
    		<span>Secteur 
    			<select class="AjaxSecteur" STYLE="width:100px" name="Secteur" onchange='go()'>
    				<option value="0"> </option>
    				{% for sec in secteur %}
    				<option value="{{ sec.idSecteur }}">{{ sec.nomSecteur }}</option>
    				{% endfor %}
    			</select>
    		</span>
    	</td>
        <td>
    		<span>DT <select id='AjaxDt' class="AjaxDt" STYLE="width:100px" name="Dt"> <option value="0"> </option></select></span>
    	</td>
    ......
    ......
    Ma fonction qui se trouve dans mon controleur.
    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
     
    	public function RecherchesecteurAction() {
    		$json = array();
    		$request = $this->container->get('request');
     
    		if($request->isXmlHttpRequest())
    		{
    			$idSecteur = '';
    			$idSecteur = $request->request->get('idSecteur');
     
    			$em = $this->container->get('doctrine')->getEntityManager();
     
    			if($idSecteur != '')
    			{	
    				$repository1 = $this->getDoctrine()->getRepository('MyApptdbdepBundle:Dt');
    				$Dt = $repository1->createQueryBuilder('dt')
    							->where("dt.idDt = :idSecteur ")
    							->orderBy('dt.nomDt','ASC')
    							->setParameter('idSecteur', '%'.$idSecteur.'%')
    							->getQuery()
    							->getResult();
    				$tabDt = array();
                    foreach ($tabDt as $Dt)
                    {
                        $tabDt[$Dt->getIdSecteur()] = $Dt->getNomSecteur();
                    }
     
    				//$TableHTML = $this->renderView('MyApptdbdepBundle:Production:Journalieredate.html.twig', array('liste_rencontres' => $liste_rencontres));
                    $response = json_encode(array('tabDt' => $tabDt));
                    $response->headers->set('Content-Type', 'application/json');
                    echo $reponse;
                    return $response;
    			}
    		}
    		else {
    			return $this->JournalieredateAction();
    		}
    	}
    Le JavaScript qui est utilisé lors du OnChange
    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
     
    <script type="text/javascript">
     
        $('.AjaxSecteur').change(
    		function() {
    			var idSecteur = $('.AjaxSecteur option:selected').val();
    			var DATA = 'idSecteur=' + idSecteur;
     
    			if(idSecteur != '') {
    				$('.AjaxDt').empty();
     
    				$.ajax({
    					url: "{{ path('tdbdep_production_journalieredaterecherche')}}",
    					data: DATA,
    					dataType: 'json',
    					success: 
    							function(response) {
    								$.each(response.tabDt, function(key, value) {
    									$('.AjaxDt').append(new Option(value,key, true, true));
    								})}
    				});
    			};
    		}
    	);
     
    </script>

  15. #15
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    A parement il n'y a personne qui bosse aujourd'hui vue les conditions climatiques

  16. #16
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Bon je suis en train de faire quelques test à fin de voir où ca plante.

    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
    29
    30
    31
    32
    33
     
    	public function RecherchesecteurAction() {
    		$json = array();
    		$request = $this->container->get('request');
     
    		if($request->isXmlHttpRequest())
    		{
    			$idSecteur = '';
    			$idSecteur = $request->request->get('idSecteur');
     
    			$em = $this->container->get('doctrine')->getEntityManager();
     
    			if($idSecteur != '')
    			{	
    				$repository1 = $this->getDoctrine()->getRepository('MyApptdbdepBundle:Dt');
    				$Dt = $repository1->createQueryBuilder('dt')
    							->where("dt.idDt = :idSecteur ")
    							->orderBy('dt.nomDt','ASC')
    							->setParameter('idSecteur', $idSecteur)
    							->getQuery()
    							->getResult();
     
    			}
    			else {
    					$$Dt=array('idDt'=>'testid','nnomDt'=>'testnom');
    			}
    return new \Symfony\Component\HttpFoundation\Response($Dt);
     
    		}
    		else {
    			return $this->JournalieredateAction();
    		}
    	}
    Mon Javascript :
    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
     
    <script type="text/javascript">
     
        $('.AjaxSecteur').change(
    		function() {
    			var idSecteur = $('.AjaxSecteur option:selected').val();
    			var DATA = 'idSecteur=' + idSecteur;
     
    			if(idSecteur != '') {
    				$('.AjaxDt').empty();
     
    				$.ajax({
    					type: "POST",
    					url: "{{ path('tdbdep_production_journalieredaterecherche')}}",
    					data: DATA,
    					//dataType: 'json',
    					success: 
    							function(res) {
    alert(res);}
    				});
    				return (false);
    			};
    		}
    	);
     
    </script>
    Lorsque je test l'alert me retourne tout mon code.

    Une idée du pourquoi svp?

  17. #17
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Personne peut m'aider please? je galère comme un fou.

  18. #18
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    135
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 135
    Points : 53
    Points
    53
    Par défaut
    Bonjour,

    Vraiment personne?.

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/10/2009, 19h53
  2. Réponses: 8
    Dernier message: 17/04/2009, 13h51
  3. Problème de classes définies mais pas trouvées par g++
    Par Michaël dans le forum Autres éditeurs
    Réponses: 10
    Dernier message: 22/07/2007, 18h45
  4. Réponses: 9
    Dernier message: 13/07/2007, 11h03
  5. [JAR]Création de Jar -> trouve pas la classe main
    Par Zapan dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 28/01/2006, 11h17

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