我有一个描述我的应用中的模型的文档, 我想在加载文档后更改字段值,我想通过事件监听器来实现它的方法。 我在config / services.yml中添加了一个新的监听器(postLoad监听器),我无法弄清楚如何获取文件并在发送之前对其进行更改。
帮助将不胜感激。 :)
这是我添加到config / service.yml(在服务中)
core.listener:
class: Matan\CoreBundle\EventListener\DocumentListener
tags:
- { name: doctrine_mongodb.odm.event_listener, event: postLoad }
DocumentListener.php
namespace Matan\CoreBundle\EventListener;
use Matan\CoreBundle\Document\App;
class DocumentListener
{
public function postLoad()
{
//I Want to change it here
}
}
答案 0 :(得分:5)
<强>溶液强>
您应该指定应在服务定义中调用的侦听器方法:
- { name: doctrine_mongodb.odm.event_listener, event: postLoad, method: onPostLoad }
现在,您可以将刚刚加载的文档从 EventArgs 传递到onPostLoad
方法。
检查它是否与您要更改的型号匹配,然后执行更改。
use Doctrine\ODM\MongoDB\Event\LifecycleEventArgs;
use Acme\Your\Document\MyDocument;
public function onPostLoad(LifecycleEventArgs $eventArgs)
{
$document = $eventArgs->getDocument();
if !($document instanceof MyDocument) {
return;
}
// ... your code here
// $document->setLoaded(new \Date('now'));
}