Symfony 2 表单类型查询生成器
Symfony 2 Formtype query builder
我遇到了 Symfony 2 表单类型的问题,我似乎无法掌握它。
我有一个应该归类的设备。这很好用。我得到一个包含所有类别 ID 的选择框。
DeviceType.php:
->add('category', 'entity', array(
'placeholder' => 'Please choose a category',
'required' => true,
'class' => 'MSelectorBundle:Category',
'property' => 'id'))
然而,类别名称等存储在不同的实体中,这允许我使用这样的 OneToMany 关系将它们翻译成不同的语言:
Category.php:
class Category
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="active", type="boolean")
*/
private $active;
/**
* @ORM\OneToMany(targetEntity="\M\SelectorBundle\Entity\CategoryTranslations", mappedBy="category", cascade={"persist", "remove"} ,orphanRemoval=true)
*/
protected $categoryTranslations;
现在我不想显示非描述性的 id,而是想以特定语言显示类别名称,但我无法正常工作。
CategoryTranslations.php:
/**
* CategoryTranslations
*
* @ORM\Table(name="categoryTranslations")
* @ORM\Entity
*/
class CategoryTranslations
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", length=10)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @var integer
*
* @ORM\Column(name="category_id", type="integer", length=10)
*/
private $category_id;
/**
* @var string
*
* @ORM\Column(name="lang", type="string", length=10)
*/
private $lang;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=300)
*/
private $name;
我已经尝试过查询生成器和数组集合,但我无法解决这个问题。我是 symfony 的新手,所以希望有人能指出我正确的方向。
谢谢你。
将 'property' => 'id'
更改为 'property' => 'name'
您还需要在实体 class
中实施 getter 和 setter
entity
字段不适合您想要的内容。我建议您使用 collection
字段并将其传递给 ChoiceList
。 ChoiceList
构造函数接受两个数组,一个用于值,另一个用于标签。
您可能遇到的唯一问题是在提交表单之后,当您尝试将值映射回实体时。请务必将您的实体 ID 作为值传递。
我遇到了 Symfony 2 表单类型的问题,我似乎无法掌握它。 我有一个应该归类的设备。这很好用。我得到一个包含所有类别 ID 的选择框。
DeviceType.php:
->add('category', 'entity', array(
'placeholder' => 'Please choose a category',
'required' => true,
'class' => 'MSelectorBundle:Category',
'property' => 'id'))
然而,类别名称等存储在不同的实体中,这允许我使用这样的 OneToMany 关系将它们翻译成不同的语言:
Category.php:
class Category
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="active", type="boolean")
*/
private $active;
/**
* @ORM\OneToMany(targetEntity="\M\SelectorBundle\Entity\CategoryTranslations", mappedBy="category", cascade={"persist", "remove"} ,orphanRemoval=true)
*/
protected $categoryTranslations;
现在我不想显示非描述性的 id,而是想以特定语言显示类别名称,但我无法正常工作。
CategoryTranslations.php:
/**
* CategoryTranslations
*
* @ORM\Table(name="categoryTranslations")
* @ORM\Entity
*/
class CategoryTranslations
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", length=10)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @var integer
*
* @ORM\Column(name="category_id", type="integer", length=10)
*/
private $category_id;
/**
* @var string
*
* @ORM\Column(name="lang", type="string", length=10)
*/
private $lang;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=300)
*/
private $name;
我已经尝试过查询生成器和数组集合,但我无法解决这个问题。我是 symfony 的新手,所以希望有人能指出我正确的方向。 谢谢你。
将 'property' => 'id'
更改为 'property' => 'name'
您还需要在实体 class
entity
字段不适合您想要的内容。我建议您使用 collection
字段并将其传递给 ChoiceList
。 ChoiceList
构造函数接受两个数组,一个用于值,另一个用于标签。
您可能遇到的唯一问题是在提交表单之后,当您尝试将值映射回实体时。请务必将您的实体 ID 作为值传递。