【问题标题】:How to add mapping to a form如何将映射添加到表单
【发布时间】:2015-01-05 13:37:22
【问题描述】:

我有一个使用表单类创建的表单。此表单的一个字段是 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,但仍然存在我在评论中提到的那些错误。

【问题讨论】:

  • 您添加了您的 FormType 而不是您的实体。请同时添加。
  • 实体是从数据库中创建的

标签: php forms symfony


【解决方案1】:

您需要entity Field Type。你的FormType 应该是这样的:

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

Checkout the docs for more info.

【讨论】:

  • 太棒了!但是如何将这些名称映射到id,以便以基本形式将其插入到实体中?
  • 这就是'property' => 'name' 的用途。它确保显示国家名称,但 ID 将存储在数据库中
  • 是的,所有值都正确,但我得到“Contry 实体类型的对象无法转换为 int”。为什么会这样?
  • 请将您的代码添加到您的问题中,以便我仔细查看
  • 好的,我刚刚粘贴了实体类,还有什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 2012-08-24
  • 2021-11-19
  • 1970-01-01
相关资源
最近更新 更多