【发布时间】:2011-11-11 02:25:59
【问题描述】:
我想根据存储在数据库中的动态参数创建表单。 所以我创建了一个名为 Parameter 的实体,它定义了参数名称,它应该显示为表单字段标签。
/**
* @ORM\Entity
*/
class Parameter
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length="255")
* @Assert\NotBlank()
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="ParameterValue", mappedBy="parameter")
*/
protected $values;
特定对象(公司对象)的参数值即将存储在 ParameterValue 表中。
/**
* @ORM\Entity
*/
class ParameterValue
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Parameter", inversedBy="values")
* @ORM\JoinColumn(name="parameter_id", referencedColumnName="id", nullable=false)
*/
protected $parameter;
/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="parameters")
* @ORM\JoinColumn(name="company_id", referencedColumnName="id", nullable=false)
*/
protected $company;
当然,公司实体包含参数属性,该属性仅存储为公司指定的那些参数。
/**
* @ORM\Entity
*/
class Company
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length="255")
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="ParameterValue", mappedBy="hotel")
*/
protected $parameters;
如何创建从 DB 动态获取所有参数、创建具有特定标签 (label=Parameter->getName()) 的文本字段并获取已与 Company 关联的参数的 ParameterValues 的表单(用于编辑操作)?
我已经创建了获取 ParameterValues 的“集合”字段,但问题是我得到的表单包含已用于公司但没有其他参数的字段。当然我不能得到标签,因为集合字段类型是 ParameterType 而不是 Parameter。
【问题讨论】:
标签: forms symfony entity-attribute-value