Internationalisation de l'application
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:
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:
translator: { fallback: fr }
l'application reste toujours en français.
Voici mon routing.yml :
Code:
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:
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:
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();
}
}
}
?> |