Symfony 如何将变量传递给sonata管理自定义列表操作?

Symfony 如何将变量传递给sonata管理自定义列表操作?,symfony,sonata-admin,Symfony,Sonata Admin,如何将变量数组传递给SonataMediaBundle:MediaAdmin:list\u image.html.twig? 似乎没有任何选择 class MediaAdmin extends Admin { protected function configureListFields(ListMapper $listMapper) { $listMapper ->addIdentifier('id') -&g

如何将变量数组传递给
SonataMediaBundle:MediaAdmin:list\u image.html.twig

似乎没有任何选择

class MediaAdmin extends Admin
{
    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('id')
            ->add('image', 'string', array(
                'template' => 'SonataMediaBundle:MediaAdmin:list_image.html.twig',
                array('data'=>'something')<<- This is not working
            ))
            ->add('custom', 'string', array(
                'template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'
            ))
        ;
    }
}
类MediaAdmin扩展了Admin
{
受保护的函数configureListFields(ListMapper$ListMapper)
{
$listMapper
->addIdentifier('id')
->添加('image','string',数组(
'template'=>'SonataMediaBundle:MediaAdmin:list_image.html.twig',
数组('data'=>'something')'SonataMediaBundle:MediaAdmin:list_custom.html.twig'
))
;
}
}
模板:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field%}
    {{dump(data)}}     <<- This is not working
{% endblock %}
{%extends'SonataAdminBundle:CRUD:base\u list\u field.html.twig%}
{%块字段%}

{{dump(data)}}将自定义数据放入admin类的成员。然后从列表字段模板调用它

public $customData = array(1,2,3);

然后在细枝上叫它。

只是详细说明蒂格兰的答案

class MediaAdmin extends Admin
{
    public $data = '';

    protected function configureListFields(ListMapper $listMapper)
    {
        $listMapper
            ->addIdentifier('id')
            ->add('custom', 'string', array('template' => 'SonataMediaBundle:MediaAdmin:list_custom.html.twig'))
        ;
        $this->data = 'something';
    }
}
在模板中:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}

{% block field %}
    <div>
        {{ admin.data }}
    </div>
{% endblock %}

注意重命名的变量。我的五美分。 版本:Symfony 2.6,Sonata Admin 2.3

我正在覆盖sonata_type_collection_小部件。 我确实在管理类中设置了变量,但花了一个小时试图弄清楚如何访问管理变量。实际上,您可以从admin类调用方法和访问变量

下面是在2.3中如何实现的:

{% block sonata_type_collection_widget %}
    {{ dump(sonata_admin.admin.test1) }}
{% endblock sonata_type_collection_widget %}
让我们试试这个解决方案: 管理员级别:

protected function configureListFields(ListMapper $listMapper){
    ->add('_action', 'actions', [
        'actions' => [
            'replay' => [
                'template' => 'MyAdminBundle:CRUD:list__action_replay.html.twig',
                'data' => 'My custom datas pass to the template'
            ]
        ]
    ]);
}
模板列表\u操作\u replay.html.twig

{{ dump(field_description.options.actions.replay.data)}}
享受以下乐趣:

{{ dump(field_description.options)}}

您需要重写admin类的curd控制器,然后在curd控制器中重写
listAction()
方法并通过此方法传递变量。必须有更简单的方法:(如果您可以获取值实体类,如
getMyCustomValue(){return 1;}
,然后在twig中,您可以通过
{{object.getMyCustomValue()}
我认为您的“数据”应该显示为field_description.options数组的一个元素。试试这个{{dump(field_description.options | keys)}}哪个解决方案适合您@wilsonrufus?
{{ dump(field_description.options.actions.replay.data)}}
{{ dump(field_description.options)}}