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

时间:2014-03-11 19:57:27

标签: 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'
            ))
        ;
    }
}

模板:

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

{% block field%}
    {{dump(data)}}     <<- This is not working
{% endblock %}

我只想将变量值传递给SonataMediaBundle:MediaAdmin:list_image.html.twig

5 个答案:

答案 0 :(得分:11)

刚刚详细说明了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';
    }
}

并在您的模板中:

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

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

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

  {{ attribute( admin.data, object.id) }}

答案 1 :(得分:3)

class MediaAdmin extends Admin

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

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

{% block field %}
    {{field_description.options.data}}
{% endblock %}

答案 2 :(得分:0)

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

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

然后在树枝上打电话给它。

答案 3 :(得分:0)

了解重命名的变量。我的5美分。 版本:Symfony 2.6,Sonata Admin 2.3

我重写了sonata_type_collection_widget。 我在Admin类中设置了变量,但是在试图找出如何访问admin变量时丢失了一个小时。实际上,您可以从管理类调用方法和访问变量。

以下是2.3中的完成方式:

{% block sonata_type_collection_widget %}
    {{ dump(sonata_admin.admin.test1) }}
{% endblock sonata_type_collection_widget %}

答案 4 :(得分:0)

请尝试以下解决方案: AdminClass:

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'
            ]
        ]
    ]);
}

模板列表__action_replay.html.twig

{{ dump(field_description.options.actions.replay.data)}}

仅用:

{{ dump(field_description.options)}}