symfony2 - 日期选择输入渲染时间戳而不是月份名称 [英] symfony2 - date choice input renders timestamp instead of month name

查看:843
本文介绍了symfony2 - 日期选择输入渲染时间戳而不是月份名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚遇到一个问题,我的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_monthname =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月),



<等)?非常感谢你。



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

 < 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 =submitvalue ={{'form.game.submit.edit'| trans ({},'admin')}}class =greenB/>< / div>
< div class =clear>< / div>
< / div>
< / fieldset>



所以没有什么特别的p>

解决方案

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

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

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


I just recently ran into a problem, where my Symfony2 app renders form with invalid date choice input. Specifically, it renders the "month" select with numbers inside, instead of month names.

The definition of the form type goes like this:

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

This definition then (by using form_widget in Twig) renders the following for month select:

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

Does anyone know, how to force Symfony to render option texts as month names (eg. January, February, etc.)? Thank you very much.

EDIT: Twig template (the form part) looks like this:

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

So nothing special there

解决方案

Of course, you can provide a format option to transform the datetime into the format of your choice:

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

This will print a select box for the year, e.g. 2012, one for the month with the long month names, and one for the day, e.g. 21. Take a look here for more formats.

这篇关于symfony2 - 日期选择输入渲染时间戳而不是月份名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆