繁体   English   中英

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

[英]How to pass variables to sonata admin custom list action?

我如何将一组变量传递给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

只是详细说明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) }}
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 %}

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

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

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

意识到重命名的变量。 我的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 %}

试试这个解决方案: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'
            ]
        ]
    ]);
}

模板list__action_replay.html.twig

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

玩得开心:

{{ dump(field_description.options)}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM