gpt4 book ai didi

Symfony2 + Doctrine2/从 2 个连接的实体对象构建表单

转载 作者:行者123 更新时间:2023-12-02 17:15:57 24 4
gpt4 key购买 nike

是否可以从 2 个连接的实体对象构建表单?

我有两个实体 propertypropertylanguage,它们以一对多关系连接。(一个属性可以有多种语言)

语言有一个标题描述列。因此,一处特性可以有英语、法语、德语标题。

我正在尝试从中构建一个表单。见下文。

Controller : addProperty.php

class AddPropertyController extends Controller
{
// ....

public function indexAction(Request $request)
{
$property = new property;
$language = new propertyLanguage;
$property ->addpropertylanguage($language);

$form = $this->createForm(new propertyType($this->getDoctrine()),$property);

// .....

}

表单类型:propertType.php

public function buildForm(FormBuilder $builder, array $options)
{

$builder
->add('title', 'text');
// other ->add() below.

}

它返回以下错误:

Neither property "title" nor method "getTitle()" nor method "isTitle()" exists in class "\defaultBundle\Entity\property"

property中当然没有property Title,但是propertylanguage中有一个。即使我尝试:->add('标题', '实体', array('class'=>defaultBundle:propertylanguage));它不起作用。

如果您有时间帮助我,谢谢。

最好,

皮埃尔。

最佳答案

您需要做的是创建一个 PropertyLanguageType 类以及一个 PropertyType。

然后,在您的 PropertyType 中,您将嵌入 PropertyLanguageType:

public function buildForm(FormBuilder $builder, array $options)
{

// $builder->add('propertyLanguage', new PropertyLanguageType());

// Since we have a 1 to many relation, then a collection is needed
$builder->add('propertyLanguage', 'collection', array('type' => new PropertyLanguageType()));

PropertyLanguageType 是您添加标题的位置。

所有内容都在手册的表格部分中,但可能需要阅读几遍。

第二种方法是将 getTitle 添加到 Property 实体,该实体将从 PropertyLanguage 实体返回标题。通过这样做,您的原始表单将起作用。但当您开始与多个属性建立多个关联时,情况可能会有点困惑。最好为每个实体定义一个类型。

关于Symfony2 + Doctrine2/从 2 个连接的实体对象构建表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com