Faire un redirect avec une ancre avec Symfony2

La méthode pour réaliser un redirect vers une page en insérant une ancre dans une action n’est pas évente, voilà la solution que j’ai utilisé :

// On redirige ici vers la page d'un événement avec une ancre
return $this->redirect($this->generateUrl('evenement_show',array( 'id' => $id)) . '#monAncre');

Puis, dans mon template twig, comme d’habitude :

<div id="monAncre">

</div>

 

Faire un include avec Symfony2 et Twig

Avec Symfony 1.4, il était possible de faire 2 sortes d’include différents : le partial et le component. La différence était qu’un partial permettait une include assez classique, en revanche le component permettait d’avoir des actions propres.

Sur Symfony2, et avec TWIG, les deux méthodes sont conservées, même si celles-ci ne portent plus les mêmes noms officiels.

Pour faire un include classique sous Symfony2, de type Partial, on utilise la syntaxe suivante :

{% include "MyBundle:Controller:myTemplate.html.twig" %}

Notez que si vous voulez inclure un template présent dans app/ressources/views, vous n’êtes pas dans un Bundle, et n’avez pas de controller attitré, la bonne syntaxe serait alors

{% include "::myTemplate.html.twig" %}

Dans d’autres cas, vous aurez besoin de faire des traitements propres à ces templates, il vous faudrait donc un controller et une action propre à ce template. L’appel de l’inclusion se fait alors d’une autre manière: avec render.

{# dans mon template twig #}
{% render "MyAppMyBundle:myController:myTemplate" %}

{# pour prendre un exemple :#}
{% render "MonsiteDiscussionBundle:Blog:listeDeMesMessages" %}

(A noter une différence avec l’inclusion classique faite avec ‘include’, cela marche en ne mettant pas l’extension de fichier .html.htwig après le nom du template.)

Le controller utilisé est donc :

//MyApp\MyBundle\Controller;

public function listeDeMesMessagesAction()
{
          //mon traitement
          $maVar = 'lorem ipsum';

         return $this->container->get('templating')->renderResponse('MonsiteDiscussionBundle:Blog:listeDeMesMessages.html.twig', array(
           'maVar' => $maVar
        ));
}

Dans votre template TWIG, vous pouvez donc désormais appeler votre variable et en faire ce que vous voulez, comme par exemple l’afficher avec :

{{ maVar }}

Comparer deux dates avec TWIG

Lors du développement d’un projet, il est fréquent de devoir comparer deux dates. Grâce à TWIG, c’est très pratique de manipuler les objets mais aussi d’en faire autant avec les dates, et ceci sensiblement de la même manière qu’avec PHP et sa fonction date();

Voici la syntaxe TWIG à utiliser dans un template :

{% if "now"|date('Ymd')  > evenement.date|date('Ymd') %}
   Mon évènement est terminé
{% else %}
   Mon évènement est à venir / en cours
{% endif %}

Attention à bien vérifier l’ordre ‘Ymd’ comme paramètre de date(), en étant étourdi on arrive vite à des résultats improbables : 20121005 (YearMonthDay) n’est pas égal à 05102012 (DayMonthYear).

De même que date(‘Ymd’) n’est pas égal à date(‘Y m d’).

Récits d’un développeur Symfony2.

En tant que développeur web, j’ai régulièrement besoin d’aller fouiller à droite à gauche sur l’Internet pour qu’il m’aide à sortir vainqueur face à des problèmes de développeur. Si tu en es toi même un, tu sais qu’il n’est même plus possible de compter combien de temps tu as passé sur StackOverflow, combien de blogs tu as écumé dans l’espoir que quelqu’un puisse résoudre ton problème en t’indiquant quelles solutions avaient été envisagées, et surtout …combien de fois as-tu trouvé la solution idéale qui t’as permis de continuer et de faire avancer tes projets grâce aux généreuses contributions de nos pairs internautes ?

Moi aussi, dans mes journées de labeur, je me mords parfois les doigts sur des incohérences, des bugs, ou tout simplement des erreurs stupides. Mais souvent, les solutions arrivent et les problèmes se règlent à force de persévérance, de relecture et d’heures passées entres les lignes de codes.

Voilà pourquoi j’ai choisi moi aussi d’ajouter ma petite touche, aussi modeste soit-elle, de conseils et de petites astuces qui m’ont permis d’avancer. Peut être que toi aussi, amis internaute / développeur / référenceur / chef de projet / { tout autre corps de métier du web }, tu trouveras un peu de réconfort dans la solitude que ton erreur 500 te procure, et qui sait… une solution digne de ce nom.