11

我正在使用 symfony2 和 sonata-admin bundle 制作应用程序。

public function configureListFields(ListMapper $listMapper)
{
    $listMapper
        ->addIdentifier('id')
        ->add('fromDate');

它显示这样的时间

September 1, 2013 02:00

所以我改变了

 -  ->add('fromDate');
 +  ->add('fromDate',null,array('format' => 'yyyy-MM-dd HH:mm:ss'))

但它仍然显示相同。

请告诉我如何使用格式显示时间?

4

7 回答 7

4

尝试使用

->add('fromDate','datetime',array('date_format' => 'yyyy-MM-dd HH:mm:ss'))

顺便说一下,相关代码在这里。我认为您的format选项会被系统覆盖,因此使用它很重要date_format。对于应用程序范围的解决方案,也请查看这个问题

于 2013-04-29T22:07:46.337 回答
3

如果您使用 SonataIntlBundle,则日期格式为:

$list->add('createdAt', 'date', array(
    'pattern' => 'yyyy-MM-dd',
))

https://sonata-project.org/bundles/intl/master/doc/reference/datetime.html中描述

于 2015-07-23T11:49:07.187 回答
3

上面没有任何东西对我有用,所以我冒险检查了页面源,它​​指向了我使用的模板:

<!-- START
    fieldName: date
    template: SonataAdminBundle:CRUD:list_date.html.twig
    compiled template: SonataAdminBundle:CRUD:list_date.html.twig
    -->
<td class="sonata-ba-list-field sonata-ba-list-field-date" objectId="1">11.03.17</td>
<!-- END - fieldName: date -->

在检查模板后,我找到了正确的选项文件名:

{%- elseif field_description.options.format is defined -%}

所以我像这样制作了我的管理员代码

->add('date', null, ['format' => 'd/m/Y'])

它奏效了。

请注意,格式是常规date()格式,并且只需要使用一个占位符标记,例如y年份,作为yyyy生产2017201720172017

于 2017-09-26T16:00:51.947 回答
2

我知道这是一个旧线程,但我希望它可以帮助某人......

尝试添加这个,就像 carzogliore 说的(但是日期时间中缺少引号):

->add('fromDate', 'datetime', array('format' => 'yyyy-MM-dd HH:mm:ss'))
于 2016-09-01T12:10:29.657 回答
1

您必须指出“日期时间”是您要使用的类型,然后使用格式键,例如:

->add('fromDate',datetime,array('format' => 'yyyy-MM-dd HH:mm:ss'))

在内部,Sonata 将使用 list_datetime.html.twig,因为您将“日期时间”作为类型并包含格式选项。下面你可以看到 list_datetime.html.twig 奏鸣曲的基本实现:

{% extends admin.getTemplate('base_list_field') %}

{% block field %}
{%- if value is empty -%}
    &nbsp;
{%- elseif field_description.options.format is defined -%}
    {{ value|date(field_description.options.format) }}
{%- else -%}
    {{ value|date }}
{%- endif -%}
{% endblock %}
于 2014-03-31T13:18:33.270 回答
0

我的“问题”不同。因为我激活了奏鸣曲 intl 包,所以它使用它来格式化日期时间列表。

->add('startAt', 'datetime', array(
                'dateType' => IntlDateFormatter::LONG,
                'timeType' => IntlDateFormatter::SHORT
            ))
于 2015-01-28T02:32:19.977 回答
0

在现代版本的奏鸣曲中,我设法使它像这样工作:

$listMapper->add('dateadd', 'datetime', array('format' => 'y-m-d H:m:s'));
于 2019-02-20T08:25:15.503 回答