0

我最近遇到了一个问题,我的 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 将选项文本呈现为月份名称(例如一月、二月等)?非常感谢你。

编辑: 树枝模板(表单部分)如下所示:

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

所以没什么特别的

4

1 回答 1

6

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

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

这将为年份打印一个选择框,例如2012,一个用于具有长月份名称的月份,一个用于日期,例如21。在这里查看更多格式。

于 2012-12-14T20:53:37.797 回答