Symfony 2.8 - 如何从无实体表单类型中检索数据?

时间:2017-10-05 18:15:35

标签: symfony symfony-forms

我有一个没有实体的表单,它的构造类似于Symfony的文档:

$form = $this->createFormBuilder(['message' => 'Standard message'])
        ->add('....', EntityType::class, [
            'class' => '....',
            'choice_label' => 'name',
        ])
        ->add('.....', DateType::class, [
            'widget' => 'single_text',
            'html5' => false,
            'attr' => ['class' => 'js-datepicker'],
        ])
        ->add('....', DateType::class, [
            'widget' => 'single_text',
            'html5' => false,
            'attr' => ['class' => 'js-datepicker'],
        ])
        ->add('Submit', SubmitType::class)
        ->getForm();

但是,是否有可能使用Form Type类并在控制器中检索数据?我的控制器现在变得非常大,因为那里有很多表单代码。当我尝试将代码转换为单独的表单类型类时,似乎处理了表单但是当我尝试在我的控制器中调用$ form-> getData()时它是空的。我使用以下代码:

$form = $this->createForm(MyFormType::class);
$form->handleRequest($request);
if($request->isMethod('POST')){
   print_r($form->getData()); // Empty?
   die();
}

我的表单类如下:

namespace AppBundle\Form;

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class MyFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
        ->add('....', DateType::class, [
            'widget' => 'single_text',
            'html5' => false,
            'attr' => ['class' => 'js-datepicker'],
        ])
        ->add('....', DateType::class, [
            'widget' => 'single_text',
            'html5' => false,
            'attr' => ['class' => 'js-datepicker'],
        ])
        ->add('....', EntityType::class, [
            'class' => '....',
            'choice_label' => 'name',
        ])
        ->add('Submit', SubmitType::class);
    }
}

另一种方法是将代码放入单独的服务中,但我认为使用表单类型更简洁。

0 个答案:

没有答案