Php Symfony-一个实体属性的多个字段
对于一个实体属性,我有三个选择字段。如下图所示。 是否有方法检测所选字段中使用的字段;然后获取其值并将其映射到相应的属性 是否可以将参数发送到表单类型(在本例中Php Symfony-一个实体属性的多个字段,php,symfony,symfony-forms,symfony-3.2,Php,Symfony,Symfony Forms,Symfony 3.2,对于一个实体属性,我有三个选择字段。如下图所示。 是否有方法检测所选字段中使用的字段;然后获取其值并将其映射到相应的属性 是否可以将参数发送到表单类型(在本例中TestType,请参见下文)。我试图使它通用,并可重复使用的其他属性 这是我到目前为止的情况 MyForm.php <?php namespace MyBundle\Form; use MyBundle\Form\Type\TestType; use ..etc class MyForm extends AbstractT
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';
}
}
<?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'=>'']]));
}
}
要检测使用了哪些选择字段,必须使用Javascript。正如您所知,Symfony是一个在服务器端工作的PHP框架,需要在客户端javascript上检测事件。对于表单类型的pass参数,您的答案如下谢谢,答案的第二部分帮助您找到了解决方案。这就是对我有效的方法:我现在将开始处理你的第一个建议。这就是我所做的:我通过实现一个jquery脚本,将更改select的同级返回为null(标签值),成功地检测到使用了哪些select字段。然后,找出哪个不是空的。但是,我在数据转换器中发现了问题。