我可以通过此代码显示表格。
$builder->add('icon', 'entity', array(
'class' => 'UserBundle:IconPics',
'property' => ‘label', 'expanded' => true, 'multiple' => false,
));
在树枝上
{{ form_label(form.icon) }}
{{ form_widget(form.icon) }}
出现标有'PictureA','PictureB','PictureC'的无线电按钮....
但我不仅要使用'label'属性,还要使用'pic'实体 jpg文件的链接。
如何通过一个form_widget使用两个属性?
我的代码如下。
我有
等表格在User.php中
/**
* @ORM\ManyToOne(targetEntity="Acme\UserBundle\Entity\IconPics", inversedBy="icon")
* @ORM\JoinColumn(name="icon", referencedColumnName="id",nullable=true)
*/
private $icon;
Icon.php中的
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $label;
/**
* @var string
*
* @ORM\Column(type="string")
*/
private $pic;
/** * * @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\User", inversedBy="icon")
* @ORM\JoinColumn(name="icon", referencedColumnName="id")
*/
private $icon;
图标表就像
|id |pic |label
|1 |aaa.png |pictureA
|2 |bbb.png |pictureB
|3 |ccc.png |PictureC
答案 0 :(得分:2)
这可能不是最优雅的解决方案,但它很快。正确的解决方案可能是编写自定义字段类型,这将涉及编写大量代码。
有一个简单的技巧可以达到你想要的效果。只需向您的实体添加一个方法,该方法将用于同时获取两个值:
public function getFormViewData()
{
return $this->getLabel() . ';' . $this->getPicture();
}
然后在property
属性中使用此方法:
$builder->add('icon', 'entity', array(
// ...
'property' => 'formViewData',
));
最后使用twig split filter来分离模板中的两个值(参见示例)并调整模板(即重写form_label小部件)以使用这些值而不是原始值。
{#
inside the overriden widget set the label correctly before rendering it
and extract the picture url.
#}
{% set label = label|split(';')|first|trans %}
{% set picture = label|split(';')|last %}
{{ label }}
{{ picture }}
有了主意吗?