를 작성해야 이벤트 리스너를. 코드 문서에서 :
/**
* The REGISTRATION_INITIALIZE event occurs when the registration process is initialized.
*
* This event allows you to modify the default values of the user before binding the form.
* The event listener method receives a FOS\UserBundle\Event\UserEvent instance.
*/
const REGISTRATION_INITIALIZE = 'fos_user.registration.initialize';
이벤트 디스패처에 대한 정보를 더 : http://symfony.com/doc/current/components/event_dispatcher/introduction.html이 그리고 예를 들어 이벤트 리스너 : http://symfony.com/doc/current/cookbook/service_container/event_listener.html
UPDATE - 어떻게 코드를? 당신의 config.yml
에서
(xml
같은 또는 services.yml
또는 기타 확장, php
)이 같은 서비스를 정의 :
demo_bundle.listener.user_registration:
class: Acme\DemoBundle\EventListener\Registration
tags:
- { name: kernel.event_listener, event: fos_user.registration.initialize, method: overrideUserEmail }
다음, 정의 리스너 클래스 :
namespace Acme\DemoBundle\EventListener;
class Registration
{
protected function overrideUserEmail(UserEvent $args)
{
$request = $args->getRequest();
$formFields = $request->get('fos_user_registration_form');
// here you can define specific email, ex:
$email = $formFields['username'] . '@sth.com';
$formFields['email'] = $email;
$request->request->set('fos_user_registration_form', $formFields);
}
}
공지 사항 : 물론 당신이 할 수있는 수신기에 @validator
을 삽입하여이 이메일의 유효성을 확인하십시오.
이제 등록 양식에 email
필드를 숨겨야합니다. 당신은 register_content.html.twig
를 오버라이드 (override) 또는로 (내 oppinion 더 좋은 방법으로)이 같은 FOS RegistrationFormType
를 오버라이드 (override)하는 것을 수행 할 수 있습니다
namespace Acme\DemoBundle\Form\Type;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationFormType extends BaseType
{
// some code like __construct(), getName() etc.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// some code for your form builder
->add('email', 'hidden', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
;
}
}
지금 응용 프로그램을 수동으로 이메일을 설정하기위한 준비가
.
출처
2013-08-05 21:14:16
NHG
그가 동일한 양식을 사용하는 한 유효성 검사는 항상 실패합니다. – ferdynator
@ byf-ferdy 'How to code?'를 추가했습니다. – NHG