我想通过get request修改注册表。
如果?type=x
启用a,b,c。否则?type=y
禁用a,b,c并设置required => false
。
这是基本逻辑。我怎样才能做到这一点?
注册类型:
<?php
namespace CS\UserBundle\Form\Type;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class RegistrationType extends BaseType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->remove('username')
->add('name', null, array(
'label' => 'Yetkili Kişi',
'required' => true,
'attr' => [
'title' => 'İsim ve Soyisim',
'placeholder' => 'İsim ve Soyisim'
]
))
->add('business_name', null, array(
'label' => 'Firma Ünvanı',
'required' => true,
'attr' => [
'title' => 'Firma Ünvanı',
'placeholder' => 'Firma Adı'
]
))
->add('city', 'entity', array(
'label' => 'Şehir',
'empty_value' => 'Seçiniz...',
'class' => 'CSContactBundle:City',
'property' => 'name',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')->where('c.country_id = 1');
},
'mapped' => false,
'required' => true,
'attr' => [
'title' => 'Bulunduğunuz Şehir'
]
))
->add('town', 'entity', array(
'label' => 'İlçe',
'empty_value' => 'Önce Şehir Seçiniz...',
'class' => 'CSContactBundle:Town',
'property' => 'name',
'required' => true,
'attr' => [
'disabled' => 'disabled',
'title' => 'Bulunduğunuz İlçe'
]
))
->add('address', 'textarea', array(
'label' => 'Adres',
'required' => true,
'attr' => [
'title' => 'İkamet Ettiğiniz Tam Adres (Şehir ve İlçe Eklemeyin)'
]
))
->add('mobile', null, array(
'label' => 'GSM',
'required' => true,
'attr' => [
'class' => 'phone',
'title' => 'Telefon Formatı: 0XXX XXX XX XX'
]
))
->add('phone', null, array(
'label' => 'Telefon',
'required' => true,
'attr' => [
'class' => 'phone',
'title' => 'Telefon Formatı: 0XXX XXX XX XX'
]
))
->add('fax', null, array(
'label' => 'Faks',
'required' => false,
'attr' => [
'class' => 'phone',
'title' => 'Faks Formatı: 0XXX XXX XX XX'
]
))
->add('tax_office', null, array(
'label' => 'Vergi Dairesi',
'required' => true,
'attr' => [
'placeholder' => 'Vergi Dairesi',
'title' => 'Firmanızın Bağlı Olduğu Vergi Dairesi'
]
))
->add('tax_id', null, array(
'label' => 'Vergi Numarası',
'required' => true,
'attr' => [
'placeholder' => 'Vergi Numarası',
'class' => 'tax',
'title' => 'Firmanızın Vergi Numarası'
]
))
->add('captcha', 'captcha', array(
'label' => 'Doğrulama',
'required' => true,
'attr' => [
'placeholder' => 'Doğrulama Kodu',
'title' => 'Resimde Gördüklerinizi Yazın'
]
));
$factory = $builder->getFormFactory();
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($builder) {
$form = $event->getForm();
$data = $event->getData();
});
}
public function getName()
{
return 'cs_user_registration';
}
}