如何根据其他列表中的选定值在下拉列表中选择默认值


How to select a default value from a dropdown list based on selected value from another list

在我的Symfony项目中,当我从'Employee'下拉列表中选择一个Employee时,我需要从另一个下拉列表中获取一个默认值,Employee所在的'Department'。

Employee和Department这两个下拉列表都已经从数据库中填充了。

我在Symfony中有一个表单,我可以手动选择员工和部门。

如何在从下拉列表中选择员工的姓名时获得员工的默认部门?

在FormType.php文件中我有:

class CommMemberType extends AbstractType
/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
    ->add('employee','entity', array(
            'label' => 'Employee Name',
            'empty_value' => ' ',
            'class' => 'CompanyBundle:Employee',
            'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('e')
                    ->orderBy('e.fname', 'ASC');
            },
        )
    )
    ->add('dept', 'entity', array(
        'label' => 'Department',
        'empty_value' => '---Select Department---',
        'required' => true,
        'class' => 'CompanyBundle:Lookup'Dept',
        'property' => 'meaning',
        'query_builder' => function(EntityRepository $er) {
            return $er->createQueryBuilder('dept')
                ->orderBy('dept.meaning', 'ASC');
        },
    ));

我也有一个jQuery代码,我只测试console.log部分:

$(document).ready(function() {
$('body .employee').on('change', function(){
    var id =  $(this).val();
    console.log(id);
    $.post('{{ emp_jquery }}', { 'employee': id },function(data){
        $('.dept').html(data);
    },"text");
})
});
你能帮我一下吗?非常感谢!

您可以将Dept实体作为表单构造函数的参数传递,然后使用'data':

class CommMemberType extends AbstractType 
{
    private $dept;
    function __construct(Dept $dept = null)
    {
        $this->dept = $dept
    }
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
    $builder
        ->add('employee','entity', array(
            'label' => 'Employee Name',
            'empty_value' => ' ',
            'class' => 'CompanyBundle:Employee',
            'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('e')
                    ->orderBy('e.fname', 'ASC');
                },
            ) 
        )
        ->add('dept', 'entity', array(
            'label' => 'Department',
            'empty_value' => '---Select Department---',
            'required' => true,
            'class' => 'CompanyBundle:Lookup'Dept',
            'property' => 'meaning',
            'data' => $this->dept ? $this->dept->getMeaning() : null, // e.g.
            'query_builder' => function(EntityRepository $er) {
                return $er->createQueryBuilder('dept')
                    ->orderBy('dept.meaning', 'ASC');
            },
        ));
   ....
在控制器中,您应该将Department对象作为参数传递给表单: