如何将映射添加到表单

时间:2015-01-05 13:37:23

标签: php forms symfony

我有一个表单,我使用表单类创建。此表单的一个字段是country_id,它在文本字段中为我提供了国家/地区ID。

但是,我希望创建一个选择字段,而不仅仅是所有ID,而是使用这些ID映射的国家/地区名称。

我在数据库中有一个表,将国家/地区ID映射到名称。但是,表单只使用一个实体,而不是这个实体。

如何在此处使用此其他表创建该选择?我该如何解决这个问题?

谢谢!

编辑:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('name', 'text', ['required' => false])
            ->add('address', 'text', ['required' => false])
            ->add('zipCode', 'text', ['required' => false])
            ->add('city', 'text', ['required' => false]);

        $builder->add('country', 'entity', [
            'class'    => 'AcmeBundle:Country',
            'property' => 'shortName',
            'required' => false,
        ]);

        // $builder->add('country', 'text', ['required' => false]);

        $builder->add('number', 'text', ['required' => false]);
    }

这就是整个方法,我们称之为Foo实体。它使用id作为值生成适当的HTML,但仍然存在我在评论中提到的那些错误。

1 个答案:

答案 0 :(得分:2)

您需要entity Field Type。您的FormType应如下所示:

$builder->add('country', 'entity', array(
    'class' => 'YourBundle:Country',
    'property' => 'name',
));

Checkout the docs for more info.