Symfony Sonata管理表单中的时间选择器(无日期)

Symfony Sonata管理表单中的时间选择器(无日期),symfony,sonata-admin,Symfony,Sonata Admin,我正在将Symfony项目的Sonata Admin用法从Sonata Admin 2.2升级到2.3,作为将整个项目升级到Symfony 2.7的一部分 我们有许多“时间”字段(也就是说,在条令中定义为“时间”,没有有意义的日期成分) 在Sonata Admin 2.2中,FormMapper的定义很简单: $formMapper ->tab('tab.general') ->add('start', null, array('label' => 'label.s

我正在将Symfony项目的Sonata Admin用法从Sonata Admin 2.2升级到2.3,作为将整个项目升级到Symfony 2.7的一部分

我们有许多“时间”字段(也就是说,在条令中定义为“时间”,没有有意义的日期成分)

在Sonata Admin 2.2中,FormMapper的定义很简单:

$formMapper
   ->tab('tab.general')
   ->add('start', null, array('label' => 'label.start')
   ->end()
这就给出了“半表格宽度”小时和分钟选择框的布局,并排排列,形式如下:

但是Sonata Admin 2.3在两行中显示了它们:

这不是很好,也不是很有用

那么,我应该设置什么来获得相同的渲染效果呢


我试过使用“sonata_type_datetime_picker”,但它确实坚持要显示日期。这些字段没有日期。仅仅选择时间似乎没有等价物。

也有同样的问题,并通过添加我自己的CSS文件进行覆盖来解决

1) 将类添加到表单字段

->add('start', 'time', array(
    'attr' => array('class' => 'fixed-time')
))
2) 在包中的Resources/public/CSS/override.CSS下创建一个新的CSS文件,并按固定时间类进行覆盖

例如:

.fixed-time .select2-container {
    width: auto !important;
}
3) 然后在包中的某个地方(参考资料/视图)创建一个名为standard_layout.html.twig的新模板,覆盖Sonata模板并添加新创建的CSS文件(记住首先调用parent(),首先加载Sonata代码)


不要忘记安装新资产(资产:安装)并清除缓存(从应用程序/缓存中删除所选文件夹),否则您将看不到任何更改。

谢谢!这验证了我最终找到的一个解决方案,它结合了来自和的技巧
{% extends 'SonataAdminBundle::standard_layout.html.twig' %}

{% block stylesheets %}
    {{ parent() }}
    <link rel="stylesheet" href="{{asset('bundles/yourbundle/css/override.css')}}" type="text/css" media="all"/>
{% endblock %}
sonata_admin:
    templates:
        layout: YourBundle::standard_layout.html.twig