simple_array 使用 SonataAdminBundle 处理
simple_array handling with SonataAdminBundle
我的实体有一个来自类型 simple_array
的 属性,存储用户生成的字符串列表(因此 choice
不适用)。
来自实体的相关部分:
/**
* @var array
*
* @ORM\Column(type="simple_array")
*/
private $tags;
我想使用 SonataAdminBundle 来显示、创建和编辑带有标签的实体:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('tags', 'collection');
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->add('tags', 'array');
}
该列表有效,但在我希望显示 Tag1, Tag2
的地方显示 [0 => Tag1, 1 => Tag2]
。创建和编辑根本不起作用,在标签的输入字段应该显示的地方什么也没有显示。
明确一点:标签不是相关实体,它们只是一个字符串数组!
对于add/edit你的标签,我推荐这个通用解决方案
要根据需要在列表模式下自定义数组值(默认情况下),只需覆盖 SonataAdminBundle 中的 list_array.html.twig
模板,如下所示:
{% extends admin.getTemplate('base_list_field') %}
{% block field %}
{{ value|join(', ') }}
{% endblock %}
我的实体有一个来自类型 simple_array
的 属性,存储用户生成的字符串列表(因此 choice
不适用)。
来自实体的相关部分:
/**
* @var array
*
* @ORM\Column(type="simple_array")
*/
private $tags;
我想使用 SonataAdminBundle 来显示、创建和编辑带有标签的实体:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('tags', 'collection');
}
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->add('tags', 'array');
}
该列表有效,但在我希望显示 Tag1, Tag2
的地方显示 [0 => Tag1, 1 => Tag2]
。创建和编辑根本不起作用,在标签的输入字段应该显示的地方什么也没有显示。
明确一点:标签不是相关实体,它们只是一个字符串数组!
对于add/edit你的标签,我推荐这个通用解决方案
要根据需要在列表模式下自定义数组值(默认情况下),只需覆盖 SonataAdminBundle 中的 list_array.html.twig
模板,如下所示:
{% extends admin.getTemplate('base_list_field') %}
{% block field %}
{{ value|join(', ') }}
{% endblock %}