如何将变量传递给奏鸣曲管理员自定义列表操作?

wil*_*fus 6 symfony sonata-admin

我如何将变量数组传递给SonataMediaBundle:MediaAdmin:list_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'
            ))
        ;
    }
}
Run Code Online (Sandbox Code Playgroud)

模板:

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

{% block field%}
    {{dump(data)}}     <<- This is not working
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我只想传递一个变量值SonataMediaBundle:MediaAdmin:list_image.html.twig.

小智 12

只是详细说明Tigran的答案.

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';
    }
}
Run Code Online (Sandbox Code Playgroud)

并在您的模板中:

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

{% block field %}
    <div>
        {{ admin.data }}
    </div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

如果你有一个由object的id索引的数组,你可以这样访问它:

  {{ attribute( admin.data, object.id) }}
Run Code Online (Sandbox Code Playgroud)


小智 0

将自定义数据放入 admin 类的成员中。然后从列表字段模板中调用它。

public $customData = array(1,2,3);
Run Code Online (Sandbox Code Playgroud)

然后在树枝中调用它。