在 sonata admin 中显示一对多关系

Show One To Many relationship in sonata admin

我想在奏鸣曲管理员的显示操作中显示一对多关系商店实体。我在 ("") 找到了问题的答案。我尝试实施@M Khalid Junaid 的解决方案,但出现错误“在 SonataAdminBundle:CRUD:base_show_field 中呈现模板 ("Warning: nl2br() expects parameter 1 to be string, object given") 期间引发异常。html.twig在第 13 行。"

这里有人遇到过这个问题吗?

GroupParticipant.php

class GroupRepresentive {
    ...
    /**
     * @ORM\OneToMany(targetEntity="GroupParticipant", mappedBy="representive", cascade={"persist", "remove"}, orphanRemoval=true)
     */
    public $participant;

    public function __construct() {
        $this->participant = new ArrayCollection();
    }
    ...}

GroupRepresentativeAdmin.php

protected function configureShowFields(ShowMapper $showMapper)
        {
            $showMapper
                ->add('name')
                ->add('eventTitle')
                ->add('email')
                ->add('person')
                ->add('payment.paymentType')
                ->add('payment.bank')
                ->add('payment.userAccountNumber')
                ->add('payment.referenceNumber')
                ->add('payment.paymentAt')
                ->end()
                ->with('Participant')
                ->add('participant', 'null', array(
                    'template' => 'AppBundle::Admin/groupParticipant.html.twig'
                ))
            ;

        }

groupParticipant.html.twig

{% extends 'SonataAdminBundle:CRUD:base_show_field.html.twig' %}
{% block field %}
    {% spaceless %}

    {% endspaceless %}
{% endblock %}

我把自定义模板放在

因为你没有真正扩展

SonataAdminBundle:CRUD:base_show_field.html.twig

试试这个

    {% block field %}
         {# show a field of your entity for example the name #}
         {{value.name}}
    {% endblock %}

虽然之前的答案已被接受,但我正在为使用 Symfony 4 和 Symfony 3.4 (Symfony Flex) 的用户提供解决方案。

Admin 中的字段 class 必须类似于:

GroupRepresentativeAdmin.php

->add('participant', 'null', array(
                    'template' => 'folderName/fileName.html.twig'
                ));

请注意,该文件夹必须位于您的 templates 目录中。你的 twig 文件的路径必须是 templates/folderName/fileName.html.twig

twig 文件中的内容必须是这样的:

文件名.html.twig

{% extends '@SonataAdmin/CRUD/base_show_field.html.twig' %}

{% block field %}
    {% spaceless %}
           //Your custom operation
    {% endspaceless %}
{% endblock %}