donglv6960 2016-01-29 13:40
浏览 108
已采纳

在Formbuilder :: add()中配置EntityType时访问类的属性和方法

I`ve got a dropdown list in my Symfony2 form like this:

$builder->add('categories','entity', array(
            'class'     => 'MyBundle:Myentity',
            'property'  => 'name',
            'label'     => 'Mylabel',
            'expanded'  => false,
            'multiple'  => false,
            'label_attr'   =>  array ( 'class'      => 'control-label' ),
            'attr'   =>  array  (   'class'         => 'form-control',
                                    'placeholder'   => 'Placeholder',
                                    'title'         => "Mytitle",
                                    'data-toggle'   => 'tooltip',
                                    'data-myidfromDB'   => '????',
                                    'data-mynamefromDB'=>'????' etc. )));

So I am getting a list of MyBundle:Myentity objects and when I choose one I want to show all its properties (like ID, name, etc.) which are stored in my DB and described in Entity class, in different html data-* fields. If I select another one from the list I want to see all information related to my newly selected option in HTML (to change dynamically). Any ideas how to do that?

  • 写回答

2条回答 默认 最新

  • duanbing8817 2016-01-30 01:45
    关注

    Since Symfony 2.7 you can set the option choice_attr to ChoiceType and set it a callable receiving the choice as an argument.

    EntityType inherits this option and the choice in that case is the instantiated entity, so you can write something like :

    $builder->add('categories','entity', array(
        'class' => 'MyBundle:MyEntity',
        'property' => 'name',
        'label' => 'Mylabel',
        'attr' => array('class' => 'form-control'),
        'label_attr' => array('class' => 'control-label'),
        'choice_attr' => function (\AppBundle\Entity\MyEntity $myEntity) {
            return array(
                'data-private-property' => $entity->getPrivateProperty(),
                'data-some-value' => $entity->someMethod(),
            );
        },
    );
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 android报错 brut.common.BrutException: could not exec (exit code = 1)
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!