Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2,Sonata,UserBundle:当用户在更新时启用时发送电子邮件_Symfony_Swiftmailer_Sonata User Bundle_Sonata - Fatal编程技术网

Symfony2,Sonata,UserBundle:当用户在更新时启用时发送电子邮件

Symfony2,Sonata,UserBundle:当用户在更新时启用时发送电子邮件,symfony,swiftmailer,sonata-user-bundle,sonata,Symfony,Swiftmailer,Sonata User Bundle,Sonata,我想能够发送一封电子邮件给用户时,管理员启用用户在索纳塔管理面板 我必须知道应该覆盖或扩展哪个文件 我想它类似于这个或这个: 我在admin bundle中找到了create函数,但我认为它不会仅被UserBundle覆盖。如果这确实是一条路要走,我怎么能只为UserBundle指定呢 关于这些信息,我在UserBundle中找不到任何create或update函数。仅在AdminBundle中。我将从我的要点与合同事件相关: 让它适应你的需要。我猜您可以简单地将“合同”重命名为“用户” 然后

我想能够发送一封电子邮件给用户时,管理员启用用户在索纳塔管理面板

我必须知道应该覆盖或扩展哪个文件

我想它类似于这个或这个:

我在admin bundle中找到了create函数,但我认为它不会仅被UserBundle覆盖。如果这确实是一条路要走,我怎么能只为UserBundle指定呢


关于这些信息,我在UserBundle中找不到任何create或update函数。仅在AdminBundle中。

我将从我的要点与合同事件相关: 让它适应你的需要。我猜您可以简单地将“合同”重命名为“用户”

然后将事件添加到admin类中的某个位置:

$event = new ContractEvent($contract);

$dispatcher = $this->get('event_dispatcher');
$dispatcher->dispatch(
    ContractEvents::CONTRACT_CREATED,
$event
); 
有关如何注入SwiftMailer的详细信息,请参见要点

您可以从Sonata Admin提供的活动中选择,而不是创建自己的活动:


选择一个适合您的需求。

我会查看EventListener,以避免在实体中创建此功能。这似乎是一个不错的主意。你有什么建议我如何聆听那个特定的事件吗?没有,对不起,我没有使用SonataAdmin,我只是有一个提示:PUsing事件是最好的方式,因为你可以在应用程序的任何地方重复使用它们。下面是一个使用create函数的示例:非常感谢,这样更清楚:)。我一直在尝试从UserAdmin重写PreUpdate方法,它实际上正在工作。但你的解决方案似乎更干净。
$event = new ContractEvent($contract);

$dispatcher = $this->get('event_dispatcher');
$dispatcher->dispatch(
    ContractEvents::CONTRACT_CREATED,
$event
);