フォームを登録するときにパスワードを自動的に設定したかったのです。イベントをトリガーするにはREGISTRATION_INITIALIZEを使用します。残念ながら、それは動作していません。FOSUserBundleイベントREGISTRATION_INITIALIZEがトリガーされていません
リスナー:
<?php
namespace Acme\UserBundle\EventListener;
use Doctrine\ORM\EntityManager;
use FOS\UserBundle\Event\UserEvent;
use FOS\UserBundle\FOSUserEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class RegistrationListener implements EventSubscriberInterface
{
/**
* @var EntityManager
*/
private $em;
/**
* @param \Doctrine\ORM\EntityManager $entityManager
*/
public function __construct(EntityManager $entityManager)
{
$this->em = $entityManager;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_INITIALIZE => 'onRegistrationInit',
);
}
public function onRegistrationInit(UserEvent $userEvent)
{
$user = $userEvent->getUser();
$user->setPassword('abcdeffffff');
}
サービス:
#src/Acme/UserBundle/Resources/config/services.yml
services:
acme_user.registration:
class: Acme\UserBundle\EventListener\RegistrationListener
arguments:
entityManager: "@doctrine.orm.entity_manager"
tags:
- { name: kernel.event_subscriber}
ので、パスワードが設定されていない、それはパスワードが空白であってはならない示しています。
私は間違っていますか?助けて!
編集:
問題は私が間違った場所でサービスを定義していたことでした。
src/Acme/UserBundle/Resources/config/services.yml
の代わりに、app/config/services.yml
である必要があります。
私はhttp://symfony.com/doc/master/bundles/FOSUserBundle/controller_events.htmlでsrc/Acme/UserBundle/Resources/config/services.yml
を見て、しかし、私のために働いていませんでした!
現在のsymfonyの3.3バージョンを使用していますか?いや、私はそれが理由ではないですが、3.2.8 – lordrhodos
@lordrhodosを使用しています。私の編集を見てください – Arcv