Symfony - 一个实体属性的多个字段

时间:2017-08-20 12:49:02

标签: php symfony symfony-forms symfony-3.2

我有一个实体属性有三个三个选择字段。如下图所示。 enter image description here

有没有办法检测使用哪个选择字段;然后得到它的值并用相应的属性映射它?

是否可以将参数发送到表单类型(在此示例中为TestType,请参见下文)。我试图使其成为通用的,并可重用于其他属性。

这是我现在所拥有的。

MyForm.php

<?php

namespace MyBundle\Form;

use MyBundle\Form\Type\TestType;
use ..etc

class MyForm extends AbstractType
{

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

        $builder
            ->add('title',      TextType::class)
            ->add('D1',         TestType::class);

    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'MyBundle\Entity\Project'
        ));
    }


    public function getBlockPrefix()
    {
        return 'mybundle_project';
    }


}

TestType.php

<?php

namespace MyBundle\Form\Type;

use Sonata\AdminBundle\Form\Type\Filter\ChoiceType;
use ..etc

class TestType extends AbstractType
{
    /*
     * private $myArray1;
     * private $myArray2;
     * private $myArray3; numberOfSeletcs
     * private $numberOfSeletcs;        
    Secondary Question: Is it possible to send these values as parameters?

    public function __construct($array1, $array2, $array3, $n)
    {
        $this->myArray1= $array1;
        $this->myArray2= $array2;
        $this->myArray3= $array3;
        $this->numberOfSeletcs= $n;

    }


    */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $myArray1 = array('label1'=>'','Value1'=>'Value1', 'Value2'=>'Value2','Value3'=>'Value3');
        $myArray2 = array('label2'=>'', 'Value4'=>'Value4','Value5'=>'Value5');
        $myArray3 = array('label3'=>'', 'Value6'=>'Value6','Value6'=>'Value6');

        $builder
            // ...
            ->add('H1', 'choice',  array(
                'choices' => $myArray1,
                'choice_attr' => ['label1' => ['disabled selected hidden'=>'']]))
            ->add('H2', 'choice',  array(
                'choices' => $myArray2,
                'choice_attr' => ['label2' => ['disabled selected hidden'=>'']]))
            ->add('H3', 'choice',  array(
                'choices' => $myArray3,
                'choice_attr' => ['label3' => ['disabled selected hidden'=>'']]));
    }


}

感谢。

1 个答案:

答案 0 :(得分:2)

要检测使用哪个选择字段,您必须使用Javascript。如您所知,Symfony是一个在服务器端工作的PHP框架,并且需要在客户端javascript上检测事件。如果要将参数传递给表单类型,请在此topic

中找到答案