在 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 %}
我想在奏鸣曲管理员的显示操作中显示一对多关系商店实体。我在 ("
这里有人遇到过这个问题吗?
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 %}