Bonjour,
Je suis actuellement ce tutoriel : http://j-place.developpez.com/tutori...avec-symfony2/ (j'ai suivi le précédent aussi) et j'en suis à l'internationalisation de l'application.
Mon problème est que lorsque je mets la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
translator:      { fallback: en }
dans le fichier app/config/config.yml, mon internationalisation fonctionne bien (le fait de cliquer sur les liens de langue change la langue). Mais lorsque je change cette ligne par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
translator:      { fallback: fr }
l'application reste toujours en français.
Voici mon routing.yml :
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
47
48
49
50
myapp_accueil:
     pattern: /
     defaults: { _controller: MyAppFilmothequeBundle:Default:index }
myapp_choisir_langue:
     pattern: /choisir-langue/{langue}
     defaults: { _controller: MyAppFilmothequeBundle:Default:choisirLangue }
 
myapp_acteur_lister:
     pattern: /acteur/
     defaults: { _controller: MyAppFilmothequeBundle:Acteur:lister }
myapp_acteur_ajouter:
     pattern: /acteur/ajouter
     defaults: { _controller: MyAppFilmothequeBundle:Acteur:editer }
myapp_acteur_modifier:
     pattern: /acteur/modifier/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Acteur:editer }
myapp_acteur_supprimer:
     pattern: /acteur/supprimer/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Acteur:supprimer }
myapp_acteur_rechercher:
     pattern: /acteur/rechercher
     defaults: { _controller: MyAppFilmothequeBundle:Acteur:rechercher }
     requirements:
        _method: POST
 
myapp_categorie_lister:
     pattern: /categorie/
     defaults: { _controller: MyAppFilmothequeBundle:Categorie:lister }
myapp_categorie_ajouter:
     pattern: /categorie/ajouter
     defaults: { _controller: MyAppFilmothequeBundle:Categorie:editer }
myapp_categorie_modifier:
     pattern: /categorie/modifier/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Categorie:editer }
myapp_categorie_supprimer:
     pattern: /categorie/supprimer/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Categorie:supprimer }
 
myapp_film_lister:
     pattern: /film/
     defaults: { _controller: MyAppFilmothequeBundle:Film:lister }
myapp_film_ajouter:
     pattern: /film/ajouter
     defaults: { _controller: MyAppFilmothequeBundle:Film:editer }
myapp_film_modifier:
     pattern: /film/modifier/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Film:editer }
myapp_film_supprimer:
     pattern: /film/supprimer/{id}
     defaults: { _controller: MyAppFilmothequeBundle:Film:supprimer }
mon fichier de vue (src/MyApp/FilmothequeBundle/Resources/views/Acteur/lister.html.twig) :
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
{% extends 'MyAppFilmothequeBundle::layout.html.twig' %}
 
{% block title %}{{ "acteur.liste" | trans  }}{% endblock %}
 
{% block content %}
<form id="form_recherche" action="{{ path('myapp_acteur_rechercher') }}" method="post">
  {{ form_widget(form) }}
  <input type="submit" value="Rechercher" />
</form>
<div class="loading"></div>
<div id="resultats_recherche">
  {% include 'MyAppFilmothequeBundle:Acteur:liste.html.twig' with {'acteurs' : acteurs} %}
</div>
 
<p><a href="{{ path('myapp_acteur_ajouter') }}">Ajouter un acteur</a>
 
<script>
  $(".loading").hide();
  $("#form_recherche").submit(function() {
      $('.loading').show();
      var motcle = $("#acteurrecherche_motcle").val();
      var DATA = 'motcle='+motcle;
      $.ajax({
          type: "POST",
          url: "{{ path('myapp_acteur_rechercher') }}",
          data: DATA,
          cache: false,
          success: function(data) {
              $("#resultats_recherche").html(data);
              $('.loading').hide();
          }
      });
      return false;
  });
</script>
{% endblock %}
et mon contrôleur (ActeurController) :
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php
namespace MyApp\FilmothequeBundle\Controller;
 
use Symfony\Component\DependencyInjection\ContainerAware;
use Symfony\Component\httpFoundation\RedirectResponse;
use Symfony\Component\HttpKernel\Exception\notFoundHttpException;
use MyApp\FilmothequeBundle\Entity\Acteur;
use MyApp\FilmothequeBundle\Form\ActeurForm;
use MyApp\FilmothequeBundle\Form\ActeurRechercheForm;
 
class Acteurcontroller extends ContainerAware {
      public function listerAction() {
             $em = $this->container->get('doctrine')->getEntityManager();
 
             $acteurs = $em->getRepository('MyAppFilmothequeBundle:Acteur')->findAll();
 
             $form = $this->container->get('form.factory')->create(new ActeurRechercheForm());
 
             return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Acteur:lister.html.twig',
               array('acteurs' => $acteurs,
                     'form'    => $form->createView())
             );
      }
 
      public function editerAction($id = null) {
             $message = '';
             $em = $this->container->get('doctrine')->getEntityManager();
 
             if(isset($id)) {
                 // modification d'un acteur existant : on recherche ses données
                 $acteur = $em->find('MyAppFilmothequeBundle:Acteur', $id);
 
                 if (!$acteur) {
                    $message = 'Aucun acteur trouvé !';
                 }
             } else {
                 // ajout d'un nouvel acteur
                 $acteur = new Acteur();
             }
 
             $form = $this->container->get('form.factory')->create(new ActeurForm(), $acteur);
 
             $request = $this->container->get('request');
 
             if ($request->getMethod() == 'POST') {
                $form->bindRequest($request);
 
                if ($form->isValid()) {
 
                   $em->persist($acteur);
                   $em->flush();
                   if (isset($id)) {
                       $message = 'Acteur modifié avec succès !';
                   } else {
                       $message = 'Acteur ajouté avec succès !';
                   }
                }
             }
 
             return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Acteur:editer.html.twig',
             array('form' => $form->createView(),
                   'message' => ''));
      }
 
      public function supprimerAction($id) {
             $em = $this->container->get('doctrine')->getEntityManager();
             $acteur = $em->find('MyAppFilmothequeBundle:Acteur', $id);
 
             if(!$acteur) {
               throw new NotFoundHttpException("Acteur non trouvé");
             }
 
             $em->remove($acteur);
             $em->flush();
 
             return new RedirectResponse($this->container->get('router')->generate('myapp_acteur_lister'));
      }
 
      public function topAction($max = 5) {
             $em = $this->container->get('doctrine')->getEntityManager();
 
             $qb = $em->createQueryBuilder();
             $qb->select('a')
                ->from('MyAppFilmothequeBundle:Acteur', 'a')
                ->orderBy('a.dateNaissance', 'DESC')
                ->setMaxResults($max);
 
             $query = $qb->getQuery();
             $acteurs = $query->getResult();
 
             return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Acteur:liste.html.twig', array(
               'acteurs' => $acteurs,
             ));
      }
 
      public function rechercherAction() {
             $request = $this->container->get('request');
 
             if ($request->isXmlHttpRequest()) {
                 $motcle='';
                 $motcle = $request->request->get('motcle');
 
                 $em = $this->container->get('doctrine')->getEntityManager();
 
                 if ($motcle != '') {
                    $qb = $em->createQuerybuilder();
 
                    $qb->select('a')
                       ->from('MyAppFilmothequeBundle:Acteur', 'a')
                       ->where("a.nom LIKE :motcle OR a.prenom LIKE :motcle")
                       ->orderBy('a.nom', 'ASC')
                       ->setParameter('motcle', '%'.$motcle.'%');
 
                    $query = $qb->getQuery();
                    $acteurs = $query->getResult();
                 } else {
                    $acteurs = $em->getRepository('MyAppFilmothequeBundle:Acteur')->findAll();
                 }
 
                 return $this->container->get('templating')->renderResponse('MyAppFilmothequeBundle:Acteur:liste.html.twig', array('acteurs' => $acteurs));
             } else {
               return $this->listerAction();
             }
      }
}
?>