在Sonata管理员列表映射器中获取实体参数值和自定义文本列

时间:2016-04-24 14:37:02

标签: symfony sonata-admin symfony-sonata sonata

我有一个可以有多个评论的Post实体。我想在帖子列表视图中显示指向新列的评论链接。

为此我已经定义了一个将在Post列表生成器中使用的路由。

admin_post_comments:
    prefix: /admin
    path: /post/{post_id}/comment/list


protected function configureListFields(ListMapper $listMapper)
{
        $listMapper
            ->addIdentifier('title', null, array('label' => 'Title'))
            ->add('comments', 'url',
                array('label' => 'Comments',
                      'route' => array(
                        'name' => 'admin_post_comments',
                        'parameters' => array('post_id' => 'post.id')
                      )));
}

但是如何获得实际的"帖子ID"对于每一行,为了生成正确的ur?现在,URL将是" /post/post.id/comment/list"但需要是" / post / 1 / comment / list"

当我选择"评论"作为列字段类型,该字段保持为空。我怎样才能写出"查看评论"?

谢谢,

亨德里克

1 个答案:

答案 0 :(得分:1)

我认为您无法以这种方式访问​​此信息。但是,如果您以这种方式定义字段模板:

        ->add('comments', 'url', array(
            'label' => 'Comments',
            'template' => ':list:list.template.comments.html.twig'
        ))

另一方面,您可以使用链接定义树枝,如果需要,还必须包含注释计数。像这样的东西:

<td class="sonata-ba-list-field sonata-ba-list-field-{{ field_description.type }}" objectId="{{ admin.id(object) }}">
{{ path(admin_post_comments, {'id': object.id}) }}<span class="badge"">{{ object.comments|length }}</span>

在此TWIG中,您可以访问admin,object(帖子),值和许多其他变量