2013-04-28 1 views
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')) 

, но он все еще показывают то же самое.

, пожалуйста, дайте мне, как использовать формат отображения времени?

+0

Это должно быть частью вашего шаблона ветки. – cheesemacfly

+0

@cheesemacfly Это просто один из способов сделать это, и не обязательно лучший. – likeitlikeit

+0

@likeitlikeit хорошо, способ отображения даты должен быть частью представления, поскольку он имеет только цель отображения, или я чего-то не хватает? – cheesemacfly

ответ

4

Попробуйте использовать

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

Кстати, соответствующий код here. Я думаю, что ваш format вариант перезаписывается системой, поэтому важно использовать date_format. Для решения на уровне приложения также посмотрите на this question.

+0

большое спасибо Это довольно полезная информация. – whitebear

+0

Я хотел знать, как это сделать, чтобы форматировать unix timesampt и тип даты. используя тип «дата» и отображает что-то вроде «24 октября 2013 года», но date_format не меняет его. есть идеи? – Onema

0

Вы должны указать, что «DateTime» тип вы watn использовать, а затем использовать ключ формата, например:

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

Внутренне, Sonata будет использовать list_datetime.html.twig как вы имеете в виду «Datetime» как тип и содержит параметры формата. Ниже вы можете увидеть list_datetime.html.twig реализацию соната базы:

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

{% block field %} 
{%- if value is empty -%} 
      
{%- elseif field_description.options.format is defined -%} 
    {{ value|date(field_description.options.format) }} 
{%- else -%} 
    {{ value|date }} 
{%- endif -%} 
{% endblock %} 
0

моя «проблема» была другой. Поскольку у меня есть встроенный пакет сонаты, он использует его для форматирования списка даты и времени.

->add('startAt', 'datetime', array(
       'dateType' => IntlDateFormatter::LONG, 
       'timeType' => IntlDateFormatter::SHORT 
      )) 
2

Я знаю, что это старая нить, но я надеюсь, что это поможет кому-то ...

Попробуйте добавить это, как сказал carzogliore (но котировки пропущены с даты и времени):

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

Ничто из вышеперечисленного не работал для меня, поэтому я рискнула проверить исходный код страницы, который указал мне на шаблон используется:

<!-- 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.