Symfony 2:通过从ArrayCollection中加载manualy属性数据来预先选择表单中的多个值

时间:2016-08-11 10:24:01

标签: php symfony

我需要预先选择我在PRE_SET_DATA事件中获得的实体属性的某些值,而不是来自数据库。

我有一个Form工作,我的Entity AccessGroup的所有数据都已加载但我的问题是从实体User中选择名为accessGroups的ArrayCollection属性,该属性未存储在数据库中。

为清楚起见,属性accessGroups由用户的角色加载。

这是FormType类

public class frame extends JPanel {

    JFrame f1;
    JPanel p1, p2;
    JLabel lbl1, lbl2, lbl3;
    JTextField txtfld1, txtfld2, txtfld3;
    JScrollBar sbar1, sbar2, sbar3;       


    public frame() {

        f1 = new JFrame("Applet ScrollBars");
        f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f1.setSize(380, 350);
        f1.setLayout(new FlowLayout());  
        p1 = new JPanel(new GridLayout(3,3,10,10));
        lbl1 = new JLabel("Scroll Bar 1");
        lbl2 = new JLabel("Scroll Bar 2");
        lbl3 = new JLabel("Scroll Bar 3");
        sbar1 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 10, 0, 255);
        sbar2 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 10, 0, 255);
        sbar3 = new JScrollBar(JScrollBar.HORIZONTAL, 0, 10, 0, 255);
        txtfld1 = new JTextField(3);
        txtfld1.setText(String.valueOf(sbar1.getValue()));
        txtfld1.setEditable(false);
        txtfld2 = new JTextField(3);
        txtfld2.setText(String.valueOf(sbar2.getValue()));
        txtfld2.setEditable(false);
        txtfld3 = new JTextField(3);
        txtfld3.setText(String.valueOf(sbar3.getValue()));
        txtfld3.setEditable(false);
        p1.add(lbl1);
        p1.add(lbl2);
        p1.add(lbl3);
        p1.add(sbar1);
        p1.add(sbar2);
        p1.add(sbar3);
        p1.add(txtfld1);
        p1.add(txtfld2);
        p1.add(txtfld3);
        f1.add(p1);
        setPreferredSize(new Dimension(512, 512));
        f1.add(this);
        f1.pack();
        f1.setVisible(true);


    }

    @Override
    public void paintComponent(Graphics g) {

        g.drawRect(50,50,70,100);
        g.setColor(Color.red);        

    }

    public static void main(String[] args) {

        new frame();


    }

}

1 个答案:

答案 0 :(得分:0)

Okey,我创建的类在choice_value参数中有自己的问题:

$form->add('accessGroups', EntityType::class, array(
                'class'         => 'PkgExtranetBundle:AccessGroup',
                'choice_label'  => 'name',
                'choice_value'  => 'role', // If choice_value is not the entity index, then preselection will not be applied as the index could not be retrieved.
                'multiple'      => true,
                'expanded'      => false
            ))