: 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 +
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 +
Explication sur le TLS/SSL : Le chiffrement des connexions internet HTTPS

Explication sur le TLS/SSL : Le chiffrement des connexions internet HTTPS

Le comment du pourquoi de l'utilisation de TLS/SSL pour proteger les communications HTTPS Voir +

Dernieres Quotes DTC

(Par LicorneBadass)

À défaut d'avoir la côte auprès de sa patronne, il l'a maintenant sur DTC.

Hitsuke : Comme d'hab, je glandais au taf, sur DTC , j'avais la tête dans le cul, j'avais pas pris mon café (bon en vrai je prend du Nesquick, mais dire que je prend du café, ça fait un peu plus viril)

Hitsuke : Ma patronne se ramène, me demande si je peux lui sortir des quotes

Hitsuke : Là je suis sur le cul, de 1 je me demande comment elle m'a grillé en train de glander, de 2, comment elle connait DTC

Tom : J'avoue ouais

Hitsuke : Du coup, je cherches pas à comprendre, je lui imprime les dernières quotes et je lui file ...

Hitsuke : Elle se tire, et reviens 1h plus tard, me demandant qu'est ce que c'était que je lui avait filé, j'ai pris une charge o/

Tom : Bah pourquoi ??

Hitsuke : Elle avait rendez-vous avec un client, elle voulait les côtes d'un produit ...

Tom : xD

Tom : GROS BOULET

Hitsuke : Bon cela dit, j'aurais quand même voulu voir sa gueule quand le client lui à demander les côtes et qu'elle a sortit ma page de quotes

Hitsuke : Parlons sérieusement sinon ....

Tom : C'est possible avec toi ?

Hitsuke : Comment on s'inscrit à Pole Emploi ? (A titre d'info, c'est pour un ami)

#19750 - Voir les commentaires

(A propos de)

Hitsuke : Comme d'hab, je glandais au taf, sur DTC , j'avais la tête dans le cul, j'avais pas pris mon café (bon en vrai je prend du Nesquick, mais dire que je prend du café, ça fait un peu plus viril)

Hitsuke : Ma patronne se ramène, me demande si je peux lui sortir des quotes

Hitsuke : Là je suis sur le cul, de 1 je me demande comment elle m'a grillé en train de glander, de 2, comment elle connait DTC

Tom : J'avoue ouais

Hitsuke : Du coup, je cherches pas à comprendre, je lui imprime les dernières quotes et je lui file ...

Hitsuke : Elle se tire, et reviens 1h plus tard, me demandant qu'est ce que c'était que je lui avait filé, j'ai pris une charge o/

Tom : Bah pourquoi ??

Hitsuke : Elle avait rendez-vous avec un client, elle voulait les côtes d'un produit ...

Tom : xD

Tom : GROS BOULET

Hitsuke : Bon cela dit, j'aurais quand même voulu voir sa gueule quand le client lui à demander les côtes et qu'elle a sortit ma page de quotes

Hitsuke : Parlons sérieusement sinon ....

Tom : C'est possible avec toi ?

Hitsuke : Comment on s'inscrit à Pole Emploi ? (A titre d'info, c'est pour un ami)

#19750 - Voir les commentaires

(Par Edwon_25)

🎶 Supercalifragilisticexpialidocious... 🎶