qualcuno può fornire un esempio completo dell'estensione Blameable Gedmo e, in particolare, la configurazione del Listener Blameable?configurare l'estensione doctrine biasimevole con symfony2
Sto usando il codice fornito da documentazione:
* @var User $createdBy
*
* @Gedmo\Blameable(on="create")
* @ORM\ManyToOne(targetEntity="Cf\UserBundle\Entity\User")
* @ORM\JoinColumn(name="createdBy", referencedColumnName="id")
*/
private $createdBy;
/**
* @var User $updatedBy
*
* @Gedmo\Blameable(on="update")
* @ORM\ManyToOne(targetEntity="Cf\UserBundle\Entity\User")
* @ORM\JoinColumn(name="updatedBy", referencedColumnName="id")
*/
private $updatedBy;
ma le colonne del database CreatedBy e UpdatedBy sono sempre NULL.
La documentazione fornisce un esempio per configurare gli altri listener (ad esempio, timestamp che ho funzionato) ma non trovo esempi o documentazione per l'ascoltatore biasimevole.
Grazie per qualsiasi aiuto !!
========================================= =================
EDIT per rispondere Jean:
sì ho aggiunto l'uso che è:
use Gedmo\Mapping\Annotation as Gedmo;
io uso anche il Timestampable con il tratto fornito:
use Gedmo\Timestampable\Traits\TimestampableEntity;
// doctrine comments removed
class Document
{
use TimestampableEntity;
...
}
e le impostazioni di data e ora on è:
services:
gedmo.listener.timestampable:
class: Gedmo\Timestampable\TimestampableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
Timespambable funziona bene. Ho provato una configurazione simile per l'ascoltatore biasimevole in quanto ha un metodo setUserValue
:
gedmo.listener.blameable:
class: Gedmo\Blameable\BlameableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setUserValue, [ @security.token_storage ] ]
ma non funziona, ottengo questo errore (i 4 fasci sono quelli utilizzati nel mio progetto):
La classe 'Symfony \ Component \ Security \ Core \ Authentication \ Token \ Storage \ TokenStorage' non è stata trovata negli spazi dei nomi chain configurati Cf \ UserBundle \ Entity, Cf \ DocumentBundle \ Entity, Cf \ SouffleBundle \ Entity, FOS \ UserBundle \ Modello
Capisco che manchi l'ID utente o il token di sicurezza come argomento in una w ay or another, ma non riesco a trovare un esempio da nessuna parte. Ecco dove sono bloccato. Qualche idea ?
hai messo il 'dell'uso al in cima alla vostra classe? Puoi mostrarcelo? – Jean
Inoltre, Blameable funziona solo se l'entità viene creata \ aggiornata con il contesto di sicurezza e contiene un token utente, che viene preso in considerazione e mantenuto nel proprio campo. – Jean
Usi [https://github.com/stof/StofDoctrineExtensionsBundle](https://github.com/stof/StofDoctrineExtensionsBundle)? Ce l'ho e le opere biasimevoli. – kba