bất kỳ ai cũng có thể cung cấp ví dụ hoàn chỉnh về tiện ích mở rộng Gedmo Blameable và đặc biệt là cấu hình của Trình nghe Blameable?định cấu hình tiện ích mở rộng giáo lý có thể mở rộng với symfony2
Tôi đang sử dụng mã được cung cấp bởi các tài liệu:
* @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;
NHƯNG các cột cơ sở dữ liệu createdBy và updatedBy luôn NULL.
Tài liệu cung cấp ví dụ để định cấu hình các trình nghe khác (ví dụ: dấu thời gian mà tôi đã làm việc) nhưng tôi không tìm thấy ví dụ hoặc tài liệu nào cho người nghe có thể đọc được.
Cảm ơn bạn đã trợ giúp !!
============================================== =================
EDIT để trả lời Jean:
vâng tôi đã thêm việc sử dụng đó là:
use Gedmo\Mapping\Annotation as Gedmo;
tôi cũng sử dụng Timestampable với đặc điểm được cung cấp:
use Gedmo\Timestampable\Traits\TimestampableEntity;
// doctrine comments removed
class Document
{
use TimestampableEntity;
...
}
và cấu hình định thời gian trên là:
services:
gedmo.listener.timestampable:
class: Gedmo\Timestampable\TimestampableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
Thời gian biểu chỉ hoạt động tốt. Tôi đã thử một cấu hình tương tự cho người nghe blameable vì nó có một phương pháp setUserValue
:
gedmo.listener.blameable:
class: Gedmo\Blameable\BlameableListener
tags:
- { name: doctrine.event_subscriber, connection: default }
calls:
- [ setAnnotationReader, [ @annotation_reader ] ]
- [ setUserValue, [ @security.token_storage ] ]
nhưng nó không hoạt động, tôi nhận được lỗi này (4 bó được những người sử dụng trong dự án của tôi):
Lớp 'Symfony \ Component \ Security \ Core \ Authentication \ Token \ Storage \ TokenStorage' không được tìm thấy trong chuỗi cấu hình không gian tên Cf \ UserBundle \ Entity, Cf \ DocumentBundle \ Entity, Cf \ SouffleBundle \ Entity, FOS \ UserBundle \ Mẫu
Tôi hiểu nó thiếu id người dùng hoặc mã bảo mật làm đối số trong một w ay hay cách khác nhưng tôi không thể tìm thấy một ví dụ nào ở đâu cả. Đó là nơi tôi bị kẹt. Bất kỳ ý tưởng ?
Cậu đặt 'use' trên đầu trang của lớp học của bạn? Bạn có thể cho chúng tôi thấy điều đó không? – Jean
Ngoài ra, Blameable chỉ hoạt động nếu thực thể được tạo \ cập nhật với bối cảnh bảo mật và chứa mã thông báo người dùng, được đưa vào tài khoản và được duy trì trong trường của bạn. – Jean
Bạn có sử dụng [https://github.com/stof/StofDoctrineExtensionsBundle](https://github.com/stof/StofDoctrineExtensionsBundle) không? Tôi có nó và các công việc dễ cháy. – kba