: Tuto Par :
Utiliser les extensions Doctrine dans Symfony 2 et 3 via les extensions gedmo

Petit tuto très simple et rapide sur un bundle INDISPENSABLE,

Gedmo est un bundle qui fournie des extensions à Doctrine, ic on va juste effleurer la surface de ce bundle mais c'est déjà assez violent.

 1) On modifie notre fichier Composer :

"stof/doctrine-extensions-bundle": "1.2.x", 

2) On l’active dans le AppKernel :

new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),

3) On rajoute ça dans notre fichier de configuration :

stof_doctrine_extensions:
    default_locale: fr_FR
    orm:
        default:
            sluggable:   true
            timestampable: true

4) On ouvre une Entité dans la quelle on souhaite automatiser certaines actions :

On charge la classe :

use Gedmo\Mapping\Annotation as Gedmo;

Et voila un exemple de ce que l'on peut faire :

Automatiser la date de création et la dernière modification d’une entité :
 

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="create")
     * @ORM\Column(name="created_at", type="datetime", nullable=false)
     */
    private $createdAt;

    /**
     * @var \DateTime
     * @Gedmo\Timestampable(on="update")
     * @ORM\Column(name="updated_at", type="datetime", nullable=false)
     */
    private $updatedAt;

    /**
     * Get createdAt
     *
     * @return \DateTime
     */
    public function getCreatedAt()
    {
        return $this->createdAt;
    }

    /**
     * Get updatedAt
     *
     * @return \DateTime
     */
    public function getUpdatedAt()
    {
        return $this->updatedAt;
    }

Vous remarquerez l’absence des Setters c’est normal, comme c’est automatisé par Gedmo ils sont inutiles, voir nuisibles.

Et un exemple pour le Slug

Alors le slug c'est tout simplement une version optimisée pour le référencement de votre article, au lieu d'avoir :
www.monsite.com?article=145
on a :
www.monsite.com/titre-de-article-optimise-sans-maj-ou-accents

/**
* Article
*
* @ORM\Table(name="article")
* @ORM\Entity(repositoryClass="SiteBundle\Repository\ArticleRepository")
* @ORM\HasLifecycleCallbacks
* @Vich\Uploadable
*/
class Article implements ItemInterface{

    /**
     * @Gedmo\Slug(fields={"titre"},separator="-", updatable=true, unique=true)
     * @ORM\Column(length=128)
     */
    private $slug;

Sources :

Github
symfony.com

Avatar de l'utilisateur Nodoka

Nodoka

PedoQueen des intrawebz 2.0, antéchristine de la connerie, j'aime les loli, les vocaloid, l’humour noir (car le blanc est raciste) et les Animés. Promis je te mangerais trollement bien avec amour. Ma devise : "If her age is on the clock, she's old enough for the cock".

Articles Aléatoires

Modifications ultra-simples et sympa pour wordpress

Modifications ultra-simples et sympa pour wordpress

Petite liste de fonctions rajoutable sans risque dans le functions.php de wordpress pour se... Voir +
Bla bla Mangesque : GATE Au-delà de la porte

Bla bla Mangesque : GATE Au-delà de la porte

Petite critique (mauvaise fois inside ?) du manga GATE : JSDF L'animé c'est de la merde Voir +
Alerte de confirmation de changement de page avec jQuery pour un formulaire avec ckeditor

Alerte de confirmation de changement de page avec jQuery pour un formulaire avec ckeditor

Petit script jQuery pour afficher une alerte JavaScript pour confirmer la fermeture de la page... Voir +

Dernieres Quotes DTC

<Moi> Très drôle aujourd'hui au taff !

<Poutix> Raconte

<Moi> Extrait de la conversation :

<Moi> Moi : « Je peux coder le site si tu veux, même si ça m'arrangerait que non »

<Moi> Patron : « Mais non t'as pas besoin, prend un fichier word et fais enregistrer sous, il te propose le format html ! »

<Moi> Moi : « Non mais ça marche pas comme ça, faut d'abord que je code en html, là ça change juste le format »

<Moi> Patron : « Si ça le propose c'est que ça marche, aller essaye »

<Moi> ...

<Moi> Moi : « Tu vois ça marche pas »

<Moi> Patron : « Bah si, ça l’ouvre dans google chrome »

<Moi> Moi : « Oui ça l’ouvre mais y a aucun code derrière »

<Moi> Patron : « Mais pourquoi tu veux du code ? »

<Moi> Moi : « Mais là ça marche juste que c’est du texte, tiens regarde je mets une image »

<Moi> Patron : « T’as fais quoi ? Y a plus rien qui marche ! »

<Moi> Moi : « Je te le dis depuis 1h, faut du code dedans »

<Moi> Intervention de l’autre stagiaire

<Moi> Autre : « En gros là ça change juste ton extension pas le contenu de ton fichier »

<Moi> Patron : « Je comprends rien. Mais bon, t’es parti pour tout coder. »

<Poutix> Du génie

<Ramos> Captain Obvious

#19340 - Voir les commentaires

Neremsa : Je meurs à petit feu.

Elric : De ?

Neremsa : De ce cours qui bouffe mon âme

Elric : ^^

Neremsa : Nan mais il (le prof) a reproduit le phénomène de la bulle temporelle

Neremsa : "ohputain ça fait 15 min qu'il parle"

Neremsa : *consultation de l'heure sur le pc : 5 min sont écoulée depuis le début du cours*

Elric : Ne regarde plus l'heure, à chaque fois que tu y penses le temps retourne au début ^^

Neremsa : Réfléchir aux implications théoriques, quantiques et philosophiques de ta phrase est plus passionnant que mon cours.

#19337 - Voir les commentaires

Mounts : bordel

Mounts : j'ai rêvé que je me créais un mot de passe

Mounts : un truc hyper secure et tout

Mounts : impossible à cracker et facile à retenir

Mounts : J'arrive à me dire dans le rêve "réveille-toi faut absolument le noter"

Mounts : Ce que je fais apparemment

Mounts : je me lève ce matin : m0unts

Mounts : ><

#19341 - Voir les commentaires

Tom : pas de conseils à prendre de cet eunuque ^^'

Pralinette : eunuque?

Sytarie : Un eunuque c'est quelqu'un à qui on a retiré le cou (la nuque plus précisément) chirurgicalement en fait.

Pralinette : ah x3

Pralinette : mais ca fait pas un peu mal?

#19342 - Voir les commentaires