【问题标题】:How to select a default value from a dropdown list based on selected value from another list如何根据从另一个列表中选择的值从下拉列表中选择默认值
【发布时间】:2015-08-02 03:36:01
【问题描述】:

在我的 Symfony 项目中,当我从“员工”下拉列表中选择员工时,我需要从另一个下拉列表中获取默认值,即员工所在的“部门”。

已经从数据库中填充了下拉列表,员工和部门。

我在 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");
})
});

你能帮我一把吗?非常感谢!

【问题讨论】:

  • 您最好从表单开始:symfony.com/doc/current/book/forms.html。您应该将您的类(带有“attr”)添加到“选择”输入并在前面设置样式。
  • 我已经建立了一个表单,其中我已经有两个下拉列表。表格工作正常。我阅读了该文档,但找不到我的问题的答案。
  • 到目前为止你尝试过什么?请分享您的代码并编写更详细的说明,“我们”会尽力帮助您。
  • 我刚刚添加了我为解决问题而编写的代码。感谢您的帮助!
  • 据我了解,每个员工都属于一个部门,你想默认显示。我说的对吗?

标签: php jquery ajax symfony


【解决方案1】:

您可以将Dept 实体作为参数传递给表单构造函数,然后使用“数据”:

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 对象作为参数传递给表单:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多