symfony2 - 日期选择输入呈现时间戳而不是月份名称

时间:2012-12-14 13:29:06

标签: forms date symfony

我刚刚遇到一个问题,我的Symfony2应用程序使用无效的日期选择输入呈现表单。具体来说,它使用里面的数字而不是月份名称来呈现“月份”选择。

表单类型的定义如下:

$builder
        ->add('title')
        ->add('shortcut')
        ->add('description')
        ->add('category')
        ->add('release_date', 'date', array(
            'input' => 'datetime',
            'widget' => 'choice'
        ));

然后这个定义(通过在Twig中使用form_widget)为月份选择呈现以下内容:

<select id="nucleo_gamesbundle_gametype_release_date_month" name="nucleo_gamesbundle_gametype[release_date][month]" required="required">
  <option value="1">1326585600</option>
  <option value="2">1329264000</option>
  <option value="3">1331769600</option>
  <option value="4">1334448000</option>
  <option value="5">1337040000</option>
  <option value="6">1339718400</option>
  <option value="7">1342310400</option>
  <option value="8">1344988800</option>
  <option value="9">1347667200</option>
  <option value="10">1350259200</option>
  <option value="11">1352937600</option>
  <option value="12">1355529600</option>
</select>

有谁知道,如何强制Symfony将选项文本呈现为月份名称(例如,1月,2月等)?非常感谢你。

修改 Twig模板(表单部分)如下所示:

<form action="{{ path('game_admin_update', {'id' : entity.id}) }}" method="post" class="form" {{ form_enctype(edit_form) }}>
  <fieldset>
    <div class="widget">
        <div class="title"><img src="{{ asset('admin/images/icons/dark/list.png') }}" alt="" class="titleIcon" /><h6>Základní informace</h6></div>
        <div class="formRow">
            {{ form_label(edit_form.title, 'form.game.title'|trans({},'admin')) }}
            <div class="formRight">{{ form_widget(edit_form.title) }}</div>
            <div class="clear"></div>
        </div>
        <div class="formRow">
            {{ form_label(edit_form.shortcut, 'form.game.shortcut'|trans({},'admin')) }}
            <div class="formRight">{{ form_widget(edit_form.shortcut) }}</div>
            <div class="clear"></div>
        </div>
        <div class="formRow">
            {{ form_label(edit_form.description, 'form.game.description'|trans({},'admin')) }}
            <div class="formRight">{{ form_widget(edit_form.description, { 'attr': {'class': 'richEditor'} }) }}</div>
            <div class="clear"></div>
        </div>
        <div class="formRow">
            {{ form_label(edit_form.release_date, 'form.game.release_date'|trans({},'admin')) }}
            <div class="formRight">{{ form_widget(edit_form.release_date) }}</div>
            <div class="clear"></div>
        </div>
        {{ form_rest(edit_form) }}
        <div class="formSubmit"><input type="submit" value="{{ 'form.game.submit.edit'|trans({},'admin') }}" class="greenB" /></div>
        <div class="clear"></div>
    </div>
</fieldset>

那里没什么特别的

1 个答案:

答案 0 :(得分:6)

当然,您可以提供格式选项,将日期时间转换为您选择的格式:

$builder
    ->add('title')
    ->add('shortcut')
    ->add('description')
    ->add('category')
    ->add('release_date', 'date', array(
        'input' => 'datetime',
        'widget' => 'choice',
        'format' => 'yMMMMd',
    ));

这将打印年份的选择框,例如2012,一个月份名称较长的月份,以及当天的一个月份,例如21。请查看here以获取更多格式。