ktoś może dostarczyć kompletny przykład rozszerzenia Blameable Gedmo, a zwłaszcza konfiguracja Blameable Listener?Konfiguracja blameable przedłużenie doktryna z Symfony2
Używam kod podany w dokumentacji:
* @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;
ALE kolumny bazy danych createdBy i UpdatedBy są zawsze NULL.
Dokumentacja stanowi przykład aby skonfigurować inne detektory (np timestampable który dostałem pracę), ale nie mogę znaleźć przykład lub dokumentacją blameable słuchacza.
Dzięki za pomoc !!
============================================== =================
EDIT odpowiedzieć Jean:
tak dodałem użytku, który jest:
use Gedmo\Mapping\Annotation as Gedmo;
Używam również Timestampable z podaną cechą:
use Gedmo\Timestampable\Traits\TimestampableEntity;
// doctrine comments removed
class Document
{
use TimestampableEntity;
...
}
i konfiguracja timestampable on jest:
services:
gedmo.listener.timestampable:
class: Gedmo\Timestampable\TimestampableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
Timespambable działa dobrze. Próbowałem podobną konfigurację blameable słuchacza ponieważ ma setUserValue
metody:
gedmo.listener.blameable:
class: Gedmo\Blameable\BlameableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setUserValue, [ @security.token_storage ] ]
ale to nie działa, mam ten błąd (na 4 zestawy są te używane w moim projekcie):
Klasa "Symfony \ Komponent \ Bezpieczeństwo \ Klucz \ Uwierzytelnianie \ Token \ Pamięć masowa \ TokenStorage" nie została znaleziona w skonfigurowanych przestrzeniach nazw Cf \ UserBundle \ Entity, Cf \ DocumentBundle \ Entity, Cf \ SouffleBundle \ Entity, FOS \ UserBundle \ model
rozumiem, że brakuje identyfikatora użytkownika lub token jako argument w jednym w Tak czy inaczej, ale po prostu nie mogę znaleźć przykładu nigdzie. To tam utknąłem. Dowolny pomysł ?
Czy można umieścić 'use' na szczycie swojej klasy? Czy możesz nam to pokazać? – Jean
Ponadto, Blameable działa tylko wtedy, gdy encja jest tworzona \ aktualizowana z kontekstem zabezpieczeń i zawierającym token użytkownika, który jest brany pod uwagę i trwa w polu. – Jean
Czy używasz [https://github.com/stof/StofDoctrineExtensionsBundle](https://github.com/stof/StofDoctrineExtensionsBundle)? Mam to i dziełami godnymi potępienia. – kba