在带有奏鸣曲的symfony2中:如何将变量传递给在configureListFields方法中为listmapper的给定字段定义的模板?

Med*_*nce 3 listfield symfony-sonata sonata-admin

使用Symfony2和Sonata,在列表中,字段模板可以被覆盖并将变量分配给模板,即setTemplateVar(),有时可能有用!(不是说'attr'用于此目的的形式,而是列出......)

我想知道将变量传递给在configureListFields方法中为listmapper的给定字段定义的模板的最佳方法是什么?

    <?php

    namespace Acme\AcmeBundle\Admin;

    use Sonata\AdminBundle\Admin\Admin;
    use Sonata\AdminBundle\Datagrid\ListMapper;
    use Sonata\AdminBundle\Datagrid\DatagridMapper;
    use Sonata\AdminBundle\Validator\ErrorElement;
    use Sonata\AdminBundle\Form\FormMapper;

    class AcmeAdmin extends Admin
    {

        protected function configureListFields(ListMapper $listMapper)
        {
            $listMapper
                ->addIdentifier('acme_field')
                ->add('date', 'date', array(
                    'template'   => "AcmeBundle:CRUD:list_date.html.twig",
            //        'dateFormat' => "Y-m-d",// ---> how to pass this var to twig ?
                ))
                ->add('_action', 'actions', array(
                    'actions' => array(
                        'edit'   => array(),
                        'delete' => array(),
                    ),
                ))
            ;
        }
Run Code Online (Sandbox Code Playgroud)

使用twig模板已经实现了翻译和格式化日期的特定问题的解决方案,如下所示:

    {% block field%}
        {% if value is empty %}
            &nbsp;
        {% else %}

            {# retrieving the dateFormat variable from the listmapper #}
            {% if dateFormat is defined %}
                {{ value|date(dateFormat)|title }}
            {% else %}
                {{ value|date('m / Y') }}
            {% endif %}

            {# passing the locale in some way here would be great, it is not available in twig.. #}
            {# scratch that, it is not necessary with intl.extension... #}
            {% if locale is defined %}
                {% set dflt_locale = locale %}
            {% else %}
                {% set dflt_locale = 'fr_FR.UTF-8' %}
            {% endif %}

            {{ value|localizeddate('medium', 'none', dflt_locale)|title }}

        {% endif %}
    {% endblock %}
Run Code Online (Sandbox Code Playgroud)

但是,我的目标是能够从listmapper中检索变量.
在提出的示例中,dateFormat将是一个很好的传递...

关于语言环境的问题实际上很好,因为我意识到它不需要传递给localizeddate ...它已经可以通过intl扩展.

下面的帖子回答引导我得出结论,因为我无法定义语言环境,但是没有添加参数就解决了! 使用Symfony 2在树枝中本地化日期 因此:

    {{ value|localizeddate('medium', 'none')|title }}
Run Code Online (Sandbox Code Playgroud)

对于与dateFormat参数相关的任何响应,请提前干杯!

Vinz

小智 16

试试Twig

field_description.options.YOURFIELDNAME
Run Code Online (Sandbox Code Playgroud)

在这里定义

->add('date', 'date', array(
                    'template'   => "AcmeBundle:CRUD:list_date.html.twig",
                    'YOURFIELDNAME' => 'Blablo'
                ))
Run Code Online (Sandbox Code Playgroud)

干杯