: 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

Sélection d'anime de l'hiver 2015/16

Sélection d'anime de l'hiver 2015/16

Petite sélection personnelle et non exaustive des animes de l'hiver 2015/16 et du visionnage... Voir +
Extentions pour firefox pour sa vie privée

Extentions pour firefox pour sa vie privée

Liste d'extension open sources pour proteger sa vie privée sur internet avec firefox Voir +
Après poodle et Heartbleed accueillez Drown

Après poodle et Heartbleed accueillez Drown

Drown la nouvelle casse généralisé de SSLv2 Voir +

Dernieres Quotes DTC

Skeletto : Je viens de me rendre compte que le langage qu'utilisent les gens qui font du droit ressemble étrangement à de l'art abstrait. C'est probablement joli, mais tu comprends rien.

#19525 - Voir les commentaires

<Maks> Mon coeur...?

<Polly> Oui ?

<Maks> Hier tu m'as parlé de mon cadeau de Noël, tu l'aurais pas commandé sur Amazon par hasard ?

<Polly> Oui, pourquoi ?

<Maks> Tu as commandé avec mon compte, c'est ça ?

<Polly> Tu as reçu un mail...

<Maks> Oui pour l'achat d'un Monopoly Game Of Thrones

<Polly> Et merde...

<Polly> J'ai hésité en plus

#19522 - Voir les commentaires

Elle : Ah dsl

Moi : Fibre aussi...

Elle : ?

Moi : Laisse tomber...

#19526 - Voir les commentaires

<Chouqui> Moi j'étais allé voir Saw 6 à Strasbourg.

<Chouqui> Juste pour le principe.

#19527 - Voir les commentaires