2014-02-12 28 views
1

我有一个表格,其中列出了测验可能的答案变成一个选择字段(复选框)复选框实体字段类型返回空值

问题是,当我检查一些箱子,并提交我的形式我得到一个空的结果,而不是获取复选框值...

这里是我的表单类型:

namespace MyApp\QuizzBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class QuizzType extends AbstractType 
{ 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 

$builder 
    ->add('reponses', 'entity', array(
     'class'=>'QuizzBundle:Reponses', 
     'property'=>'titre', 
     'multiple'=>true, 
     'expanded'=>true, 
     'required'=>true 
)) 
; 
} 

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
    'data_class'=>'MyApp\QuizzBundle\Entity\Quizz' 
)); 
} 

public function getName() 
{ 
    return 'myapp_quizztype'; 
} 
} 

但如果我尝试没有“启用” =>真的,我可以选择多个答案也是一样,我可以在我的控制得到他们的价值观...

有人可以帮助我吗?

+0

您如何访问控制器中的值? – Ramesh

+0

我尝试了'$ request-> request-> get('myapp_quizztype');'和'$ form-> getData();'但这两个都不起作用 – HSoltys

回答

0

因此,您已将实体映射到您的表单,因此$ form-> getData()将为null。如果您的quizz实体有一个名为“响应”的字段(与您的表单字段名称相同),您可以在创建表单时传入的实体中找到您的数据。

$form = $this->createForm(new QuizzType(), $quiz); 

$form->handleRequest($request); 

if ($form->isValid()) { 
    $selected = $quiz->getResponses(); //you will find the selected responses this way. 
} 
+0

其实它不工作......我尝试了你的方法,但是我得到了一个空的结果再次。我可以告诉你我的实体,我的完整表单类型和我的控制器是否可以帮助你。我有一个OneToMany $在我的Quizz实体中响应,在我的Reponses实体中有一个ManyToOne $ quizz – HSoltys